Non riesci a trovare il controllo in modalità di modifica in DataList
-
23-08-2019 - |
Domanda
private void BindDataList()
{
int userId = Convert.ToInt32(ProfileInfo.GetUserID());
DataList1.DataSource = CatalogAccess.GetAddressByUserID(userId);
DataList1.DataBind();
foreach (DataListItem item in DataList1.Items)
{
Label lbl = (Label)item.FindControl("lbl");
lbl.Text = "myLabel";
}
}
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
int userId = Convert.ToInt32(ProfileInfo.GetUserID());
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1.DataSource = CatalogAccess.GetAddressByUserID(userId);
DataList1.DataBind();
Label lbl = (Label)e.Item.FindControl("lbl") as Label;
lbl.Text = "edit mode";
}
<asp:DataList ID="DataList1" runat="server" oneditcommand="DataList1_EditCommand" >
<ItemTemplate>
<asp:Label ID="lblAddressID" runat="server" Text='<%# Bind("addressID") %>'/>
<asp:Label ID="lbl" runat="server" />
<asp:Button runat="Server" ID="cmdEdit" CommandName="Edit" Text="Edit"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtAddressID" runat="server" Text='<%# Bind("addressID") %>' BackColor="#FFFF66" />
<asp:Label ID="lbl" runat="server"/>
<asp:Button runat="Server" ID="cmdUpdate" CommandName="Update" Text="Update" />
<asp:Button runat="Server" ID="cmdCancel" CommandName="Cancel" Text="Cancel"/>
</EditItemTemplate>
</asp:DataList>
Soluzione
Passaggio 1: i dati si legano da qualche parte
Passaggio 2: gestire l'evento OnItemDataBound e trova il tuo controllo di qui, simile al seguente ...
protected void DataList1__ItemDataBound(Object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.EditItem)
{
Label lbl = (Label)e.Item.FindControl("lbl");
lbl.Text = "edit mode";
}
}
Per ulteriori informazioni su questo evento un'occhiata al esempio MSDN . È necessario verificare l'ItemType. In questo caso è in modalità di modifica, altrimenti si controlla per un listitem o un elemento alternativo ecc.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow