2009-01-09 47 views
2

我有一個datalist控件,裏面有一些控件(例如:button)。我想寫一些代碼到datalist控件中的按鈕的click事件中。但是在頁面後面的代碼中,我無法將控件的名稱查看到datalist中。我怎麼解決這個問題?在datalist下使用事件控制

回答

2

如果你不希望將處理程序添加到所有的子活動,你可以代替你的代碼添加到OnItemCommand。

<asp:DataList id="DataList1" runat="server"> 
<ItemTemplate> 
<asp:Button ID="btnDoSomething" Runat=server CommandName="DoSomething" 
CommandArgument="<%# DataBinder.Eval(Container.DataItem, "SomeID") 
%>"></asp:LinkButton> 
</ItemTemplate> 
</asp:DataList> 

protected void DataList1_ItemCommand(
object source, DataListCommandEventArgs e) 

{ 

    if (e.CommandName == "DoSomething") 

    { 

    //Do stuff 

    } 

} 
3

將您的事件附加到數據列表的OnItemCreated事件中的控件。

編輯補充樣本

private void DataList_ItemCreated(object sender, 
    System.Web.UI.WebControls.DataListItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      Button btn = (Button)e.Item.FindControl("btnWhatever"); 
      if (btn != null) btn.Click += new EventHandler(SomHandler); 
     } 
    } 
+0

你可以簡化一下嗎?一些示例代碼可以幫助。 – mavera 2009-01-09 14:51:40

+0

當然,事情。查看編輯並讓我知道如果清楚。 – cmsjr 2009-01-09 14:54:04