Использование события контроля в datalist - PullRequest
2 голосов
/ 09 января 2009

У меня есть элемент управления списком данных, в котором есть некоторые элементы управления (например, кнопка). Я хочу написать некоторый код в событие нажатия кнопки, которая находится в элементе управления datalist. Но в коде за страницей я не вижу названия элементов управления в списке данных. Как я могу решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 09 января 2009

Присоедините ваше событие к элементам управления в событии 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);
        }
    } 
2 голосов
/ 10 января 2009

Если вы не хотите добавлять обработчик ко всем дочерним событиям, вы можете вместо этого добавить свой код в 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

  }

}
...