DataList ASP.NET catch事件

时间:2013-01-25 09:00:13

标签: c# asp.net imagebutton datalist

我有一个包含Web用户控件(ascx2)的Web用户控件(ascx1)。在ascx2里面有一个dataList。

ASCX1

Page_Load 
{ 
var bp = (Mbp)Page.LoadControl(<b>ASCX2</b>); 
bp.dataSource = new List<...> { ... }; 
placeholder.Controls.Add(bp); 
} 

ASCX2

public List<TBusiness> dataSource; 
private static List<...> ds; 
private static ITemplate itemTemplate; 
private static ITemplate editTemplate; 

Page_Load
{ 
... 

    if (!this.IsPostBack) 
    { 
    ds = this.dataSource;   
    itemTemplate = new CustomTemplate(...);
    editTemplate = new CustomTemplate(...); 
    }

dataList.ItemTemplate = itemTemplate; 
dataList.EditItemTemplate = editTemplate; 
dataList.DataSource = ds; 
dataList.DataBind(); 
} 

ItemTemplate

ImageButton {CommmandName="Edit"} 

protected void dataList_EditCommand(object source, DataListCommandEventArgs e) 
    { 
        dataList.EditItemIndex = e.Item.ItemIndex; 
        dataList.DataBind(); 
    } 


EditTemplate:

ImageButton {CommmandName="Delete"} 
ImageButton {CommmandName="Cancel"} 
ImageButton {CommmandName="Update"} 

问题: 点击ImageButton{CommmandName="Edit"}将模板更改为EditTemplate。可以编辑元素,但忽略EditTemplate上的ImageButton事件(删除,取消,更新)。单击这些图像按钮不执行任何操作,只需更改回itemTemplate。无法捕获这些ImageButtons的事件(删除,取消,更新)。

1 个答案:

答案 0 :(得分:0)

您需要处理ItemCommand事件。我没有在你的代码中看到这方面的证据。

检查CommandName参数以确定要采取的操作。

void Item_Command(Object sender, DataListCommandEventArgs e) 
{
   if ( e.CommandName = "Delete" ){
     // Perform Delete, etc.
     MyDL.EditItemIndex = -1;
     DataList.DataBind();
   }    
}