Utilizzo dell'evento di controllo nel datalist
Domanda
Ho un controllo del datalist che contiene alcuni controlli (es: pulsante). Voglio scrivere del codice nell'evento click del pulsante che è nel controllo del datalist. Ma nel codice dietro la pagina non riesco a vedere il nome dei controlli nel datalist. Come posso risolvere questo problema?
Soluzione
Se non si desidera aggiungere un gestore a tutti gli eventi figlio, è possibile invece aggiungere il codice a 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
}
}
Altri suggerimenti
Collega il tuo evento ai controlli nell'evento OnItemCreated del datalist.
MODIFICATO PER AGGIUNGERE CAMPIONE
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);
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow