2013-02-21 58 views
0

asp:DataList我有不同的行與一些文本,每個都有一個按鈕。在這個按鈕上,OnClientClick打開一個jQuery對話框,onclick調用後端並在顯示的對話框中填充一個updatepanel。從updatepanel中動態創建的控件獲取值

後端給我的值爲「AV」「TEXT」,這意味着我應該填充文本框,並在返回值時將其標識符稱爲「AV」。可以有無數個控件,並將它們添加到(動態創建的)表格中。

這工作正常。但在更新面板中,我有一個應該保存這些值和ID的按鈕,但我找不到它們!我試過把表添加到Session,這讓我找到控件,但值不存在。如果沒有添加到會話中,控件不在那裏。

<div id="dialog-confirm" style="display: none;"> 
<div id='dialog'> 
    <asp:UpdatePanel ID="upEditUpdatePanel" UpdateMode="Conditional" runat="server"> 
     <ContentTemplate> 
      <asp:Panel ID="pnlVars" runat="server"> 
      </asp:Panel> 
      <asp:Button ID="btnOK" runat="server" Text="OK" OnClientClick="StartLoader();" OnClick="btnOK_Click" align="center" /> 
     </ContentTemplate> 
     <Triggers> 
      <asp:PostBackTrigger ControlID="btnOK" /> 
     </Triggers> 
    </asp:UpdatePanel> 
</div> 

控件添加如下:

Dim pnlVars As Panel = upEditUpdatePanel.FindControl("pnlVars") 
... 
controls = GetControls() 
Swtich controls.type 
Case "TEXT" 
Dim txtVar As New TextBox 
txtVar.ID = "AV" 
tblCellVal.Controls.Add(txtVar) 
tblRow.Cells.Add(tblCellVal) 
tblVars.Controls.Add(tblRow) 
pnlVars.Controls.Add(tblVars) 
.... 
upEditUpdatePanel.Update() 

我試圖獲取值和迭代控件的方式:

Protected Sub btnOK_Click(ByVal sender As Object, _ 
         ByVal e As EventArgs) 
    For Each c As Control In pnlVars.Controls 
     If TypeOf c Is Control Then 

      If TypeOf c Is TextBox Then 
       Dim ctr As TextBox = DirectCast(c, TextBox) 
      End If 

     End If 
     If c.Controls.Count > 0 Then 
      GetUserControls(c.Controls) 
     End If 
    Next 
End Sub 

接受在vb答案.net或c#

回答

0

你應該瞭解asp.net Page Cycle

http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx

要獲取已值,動態創建的,你必須從

protected void Page_PreRender(object sender, EventArgs e) { 
    // get values from your dynamically created elements 
} 
+0

感謝您的回答讓他們。我已經實現了這個,但是當我嘗試迭代pnlVars.Controls時,它是空的。 – Thomas 2013-02-21 11:26:07

+0

即 - textproperty爲空。 – Thomas 2013-02-21 11:32:14

+0

您應該重新綁定它以獲取這些值 – IamStalker 2013-02-21 11:36:40

相關問題