我有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>
我在ItemDataBound
上添加控件:
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);
}
}
在PostBack
我正在搜索TextBox
,但在DataList
中只能找到标签。
是否因为生命周期?如何获取特定文本框的值?
谢谢
答案 0 :(得分:2)
是否因为生命周期?
是的 - 基本上你需要在回发时重新添加控件,以便后续方法/处理程序可以使用它。
另一种方法是将此文本框作为网格的一部分,并使用一些Javascript显示/隐藏文本框 - 这样它就可以在回发时使用,因为它没有动态添加。