C# ASP.NET。是否可以在ItemDataBound上找到动态添加的WebControl?
我有C# ASP.NET。是否可以在ItemDataBound上找到动态添加的WebControl?,c#,asp.net,data-binding,C#,Asp.net,Data Binding,我有DataList控件: <asp:DataList ID="DataList1" runat="server" RepeatColumns="1" OnItemDataBound="dlRequestLayout_ItemDataBound" > <ItemTemplate> <asp:Label ID="lbl" Width="150px" runat="server" Text='<%# Eval("LabelText") %&
DataList
控件:
<asp:DataList ID="DataList1" runat="server" RepeatColumns="1" OnItemDataBound="dlRequestLayout_ItemDataBound" >
<ItemTemplate>
<asp:Label ID="lbl" Width="150px" runat="server" Text='<%# Eval("LabelText") %>' />
</ItemTemplate>
</asp:DataList>
在PostBack
上,我正在搜索TextBox
,但在DataList
中只能找到标签
是因为生命周期吗?如何获取特定文本框的值
多谢各位
是因为生命周期吗
是的-本质上,您需要在回发时重新添加控件,以便后续方法/处理程序可以使用该控件
另一种方法是将此文本框作为网格的一部分,并使用一些Javascript显示/隐藏文本框-这样,它将在回发时可用,因为它不是动态添加的。尝试向文本框添加ID。。。不确定这样做是否奏效,只是想一想你是在绑定数据吗?仅在第一页加载时,或在每次回发时?单击按钮。所以有一次。我应该在每次回发时都这样做吗?你的意思是,我必须在每次回发时调用DataBind()?我的意思是,你需要在回发时重新添加额外的控件,以便它在回发中可用-这样你就可以在你想阅读内容的任何地方访问它。通过Javascript可以更容易地显示/隐藏它-无需在回发时重新创建文本框。更改后,您可以重新绑定网格,以便用户可以看到更改。谢谢。。。我正在添加一组控件并仅显示必需的。
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
WebControl control;
if (_textbox)
{
control = new TextBox();
}
e.Item.Controls.Add(control);
}
}