在asp:DataList
我有一些文本的不同行,每行都有一个按钮。OnClientClick 在此按钮上打开一个 jquery 对话框,onclick 调用后端并在显示的对话框中填充一个更新面板。
后端给了我像“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# 中的答案