添加事件委托
来源:互联网 发布:接地气网络词语 编辑:程序博客网 时间:2024/06/05 19:42
AddHandler xdlstFriends.EditCommand, AddressOf xdlstFriends_ItemCommand
内层控件数据绑定与事件声明在外层的ItemDataBind中实现;例子中外层DataList的Id为dlQuestion,内层为dlItem;代码如下
private void dlQuestion_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if ( e.Item.ItemType == ListItemType.EditItem || e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
{
LinkButton lb = (LinkButton)e.Item.FindControl("lbtnDelete");
if ( lb != null )
lb.Attributes.Add("onclick", "return confirm('确实要删除么?')");
//得到内层DataList
DataList dlItem= (DataList)e.Item.FindControl("repItem");
if ( dlItem != null )
{
if ( ViewState["repIndex"] != null )
{
dlItem.EditItemIndex = (int ) ViewState["repIndex"];
}
dlItem .ItemCommand += new DataListCommandEventHandler(dlItem_ItemCommand);
dlItem .ItemDataBound += new DataListItemEventHandler(dlItem_ItemDataBound);
int qid = ((InvQuestion)e.Item.DataItem).Que_Id;
ArrayList al = InvController.GetItemCollection( qid );
dlItem .DataSource = al;
dlItem .DataBind();
}
}
}
其中ViewState对状态信息的读取和下面的保存联系后再讨论;
下面以内层DataList的Edit事件为例;
private void dlItem_ItemCommand(object source, DataListCommandEventArgs e)
{
if ( e.CommandName == "edit")
{
int qid = 0;
//得到外层datalist
DataList dllist = (DataList)e.Item.Parent.Parent.Parent;
//取得外层Question记录的Id
HtmlInputHidden lbEditNum = (HtmlInputHidden)dllist.Items[0].FindControl("hidQuestion");
if ( lbEditNum.Value != "")
{
qid = int.Parse(lbEditNum.Value);
}
//得到内层DataList
DataList dl = (DataList)e.Item.Parent;
dl.EditItemIndex = e.Item.ItemIndex;
//保存状态信息
ViewState["repIndex"] = e.Item.ItemIndex;
// Response.Write(e.Item.ItemIndex);
//重新绑定内层DataList数据
ArrayList al = InvController.GetItemCollection( qid );
dl.DataSource = al;
dl.DataBind();
}
}
在内层DataList中e.CommandName="edit"事件中必须保存ViewState["index"] = e.Item.Index信息;否则在e.CommandName="update"中得不到editIndex的信息.需要保存ViewState的原因是:由于暂时没有找到更好的方法,内层DataList数据绑定需要在每个事件发生时对外层DataList重新绑定,也就是在Page.Load中加载DataBind()事件,对效率有一定影响
- 添加事件委托
- js动态添加事件-事件委托
- js里面如何给事件添加事件委托以及事件委托的作用
- 利用反射获得委托和事件以及创建委托实例和添加事件处理程序
- 利用委托给用户控件添加事件(转)
- 建议137:委托和事件类型应添加上级后缀
- 事件委托
- 事件委托
- 委托 事件
- 委托事件
- 事件&&委托
- 委托/事件
- 委托事件
- 事件委托
- 事件委托
- 事件委托
- 事件委托
- 委托&事件
- Oracle分页查询语句(四)
- flash第一帧加代码时,如果用gotoAndPlay那么第一帧上的代码无效
- 文本框同步输入
- Ubuntu瞄准移动操作系统,剑指Android
- Oracle分页查询语句(五)
- 添加事件委托
- Oracle分页查询语句(六)
- Oracle分页查询语句(七)
- 与我相亲的剩女竟然是个小三
- 把握趋势,把握未来 —- 小评《只有偏执狂才能生存》
- (找工作的同学注意了!)签offer和三方的区别和注意
- js原型理解
- 西雅图十大最具潜质初创公司盘点
- 工厂方法(Factory Method) -- (模式之八)