2013-07-10 19 views
1

我有DataList控制:ASP.NET。是否有可能在ItemDataBound上查找動態添加的WebControl?

<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

嘗試添加一個ID到文本框......不知道這是否會做的伎倆,只是一個想法 –

+0

你如何綁定數據?只在第一頁加載,或在每一個回傳? – Andrei

+0

點擊按鈕。所以有一次。我每次回傳都會這樣做? – Sergejs

回答

2

是不是因爲生命週期?

是的 - 基本上你需要重新添加回發控件,以便後續方法/處理程序可用。

另一種方法是將此文本框作爲網格的一部分,並使用一些Javascript語言顯示/隱藏文本框 - 這種方式在回發時可用,因爲它不會動態添加。

+0

您的意思是說,我必須在每次回發時調用DataBind()? – Sergejs

+0

我的意思是您需要在回發中重新添加額外的控件,以便在後期可用 - 這種方式可以在您想要閱讀其內容的任何地方訪問它。 使用Javascript顯示/隱藏它會更容易 - 無需在回發時重新創建文本框。 – Darren

+0

您將在更改後重新綁定網格,以便用戶可以看到更改。 – Darren

相關問題