数据列表 ASP.NET 捕获事件

本文关键字:事件 NET 列表 ASP 数据 | 更新日期: 2023-09-27 17:55:48

我有一个包含 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"}将模板更改为编辑模板。可以编辑元素,但忽略编辑模板上的图像按钮事件(删除、取消、更新)。单击这些图像按钮时,什么都不做,只需更改回项目模板。无法捕获这些图像按钮的事件(删除、取消、更新)。

数据列表 ASP.NET 捕获事件

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

检查命令名称参数以确定要执行的操作。

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