-3

我有一个包含 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(); 
} 

项目模板

ImageButton {CommmandName="Edit"} 

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


编辑模板:

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

问题:单击ImageButton{CommmandName="Edit"}将模板更改为 EditTemplate。可以编辑元素,但忽略 EditTemplate 上的 ImageButton 事件(删除、取消、更新)。单击这些 Imagebuttons 什么都不做,只需更改回 itemTemplate。无法捕获这些 ImageButton 的事件(删除、取消、更新)。

4

1 回答 1

0

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

检查 CommandName 参数以确定要执行的操作。

void Item_Command(Object sender, DataListCommandEventArgs e) 
{
   if ( e.CommandName = "Delete" ){
     // Perform Delete, etc.
     MyDL.EditItemIndex = -1;
     DataList.DataBind();
   }    
}
于 2013-02-13T03:24:25.997 回答