2009-01-09 26 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