2013-01-25 99 views
-3

我有一個包含web用戶控件(ascx2)的web用戶控件(ascx1)。在那個ascx2裏面有一個dataList。DataList ASP.NET捕獲事件

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事件(刪除,取消,更新)。點擊這些Imagebuttons什麼也不做,只需改回itemTemplate即可。無法捕獲這些ImageButtons的事件(刪除,取消,更新)。

回答

0

您需要處理ItemCommand事件。我在代碼中沒有看到這方面的證據。

檢查CommandName參數以確定要執行的操作。

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