ASP.NET。是否可以在ItemDataBound上找到动态添加的WebControl?

时间:2013-07-10 13:04:36

标签: 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") %>' />
    </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中只能找到标签。

是否因为生命周期?如何获取特定文本框的值?

谢谢

1 个答案:

答案 0 :(得分:2)

  

是否因为生命周期?

是的 - 基本上你需要在回发时重新添加控件,以便后续方法/处理程序可以使用它。

另一种方法是将此文本框作为网格的一部分,并使用一些Javascript显示/隐藏文本框 - 这样它就可以在回发时使用,因为它没有动态添加。