C# 无法访问动态创建的控件
在我的网站中,我可以使用更新面板控件动态创建控件(文本框和下拉列表)。但我无法访问这些控件。即使在调试期间在浏览器中查看源代码,动态创建的控件也不存在!我想知道为什么我们能够看到动态创建的控件,而o/p的源代码视图中却没有这些控件的定义。你能帮我澄清这个疑问吗。非常感谢 代码:C# 无法访问动态创建的控件,c#,asp.net,C#,Asp.net,在我的网站中,我可以使用更新面板控件动态创建控件(文本框和下拉列表)。但我无法访问这些控件。即使在调试期间在浏览器中查看源代码,动态创建的控件也不存在!我想知道为什么我们能够看到动态创建的控件,而o/p的源代码视图中却没有这些控件的定义。你能帮我澄清这个疑问吗。非常感谢 代码: <div id="divAssociatedInc"> <asp:ScriptManager ID="ScriptManager1" runat="server"> &
<div id="divAssociatedInc">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel11" runat="server">
<ContentTemplate>
<%--<asp:UpdatePanel ID="updPnlAssociatedInc" runat="server" UpdateMode="Conditional">
<ContentTemplate>--%>
<asp:Label ID="lblcount" runat="server" Text="1" Visible="false"></asp:Label>
<asp:Table ID="someTBL" runat="server" Style="width: 100%">
<asp:TableRow>
<asp:TableCell HorizontalAlign="right" Style="width: 200px">
<asp:Label ID="lblAssociatedIncNo" runat="server" Text="Associated Incident(s)# :"></asp:Label><font
face="verdana" color="red" size="1"></font>
<div>
<asp:Button runat="server" ID="BtnAddAssoInc" OnClick="btnAddNewRowAssocInc_Click"
Text="Add Associated Incidents" />
</div>
</asp:TableCell>
<asp:TableCell HorizontalAlign="left" Style="width: 320px;">
<asp:TextBox ID="txtAssocIncRec0" name = "txtAssoc0" runat="server" MaxLength="12"></asp:TextBox>
</asp:TableCell>
<asp:TableCell HorizontalAlign="right" Style="width: 200px">
<asp:Label ID="lblAssociatedSeverity" runat="server" Text="Severity :"></asp:Label><font
face="verdana" color="red" size="1"></font>
</asp:TableCell>
<asp:TableCell HorizontalAlign="left" Style="width: 320px;">
<asp:DropDownList ID="ddlbAssocIncRec0" name="ddlbAssoc0" runat="server">
</asp:DropDownList>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</ContentTemplate>
</asp:UpdatePanel>
</div>
对应的代码是
protected void Page_Load(object sender, EventArgs e)
{
int intRowCount = Convert.ToInt32(ViewState["No_of_Rows"]);
for (int i = 1; i <= intRowCount; i++)
{
TableRow row = new TableRow();
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
TableCell cell3 = new TableCell();
TableCell cell4 = new TableCell();
TextBox tb = new TextBox();
DropDownList ddl = new DropDownList();
Label lbl1 = new Label();
Label lbl2 = new Label();
row.ID = "rwAssocIncRec" + i;
cell1.ID = "cAssocIncRec" + i + "1";
cell2.ID = "cAssocIncRec" + i + "2";
cell3.ID = "cAssocIncRec" + i + "3";
cell4.ID = "cAssocIncRec" + i + "4";
cell2.Attributes.Add("align", "left");
cell4.Attributes.Add("align", "left");
tb.ID = "txtAssocIncRec" + i;
tb.MaxLength = 12;
tb.EnableViewState = true;
lbl1.ID = "lblAssocIncRec" + i + "01";
lbl2.ID = "lblAssocIncRec" + i + "02";
ddl.ID = "ddlbAssocIncRec" + i;
cell1.Controls.Add(lbl1);
cell2.Controls.Add(tb);
cell3.Controls.Add(lbl2);
cell4.Controls.Add(ddl);
ddl.Items.Add(new ListItem("--Select--", "0"));
ddl.Items.Add(new ListItem("1", "1"));
ddl.Items.Add(new ListItem("2", "2"));
row.Cells.Add(cell1);
row.Cells.Add(cell2);
row.Cells.Add(cell3);
row.Cells.Add(cell4);
someTBL.Rows.Add(row);
}
}
protected void btnAddNewRowAssocInc_Click(object sender, EventArgs e)
{
TableRow newRow = new TableRow();
newRow.ID = "trAssocIncRec" + lblcount.Text;
TableCell newCell1 = new TableCell();
newCell1.ID = "tdAssocIncRec1" + lblcount.Text;
Label lbl = new Label();
lbl.Text = "";
lbl.ID = "lblAssocIncRec" + lblcount.Text;
newCell1.Controls.Add(lbl);
newRow.Cells.Add(newCell1);
TableCell newCell2 = new TableCell();
newCell2.ID = "tdAssocIncRec2" + lblcount.Text;
TextBox txtBox = new TextBox();
txtBox.ID = "txtAssocIncRec" + lblcount.Text;
txtBox.MaxLength = 12;
newCell2.Attributes.Add("align", "left");
newCell2.Controls.Add(txtBox);
newRow.Cells.Add(newCell2);
TableCell newCell3 = new TableCell();
newCell3.ID = "tdAssocIncRec3" + lblcount.Text;
Label lbl2 = new Label();
lbl2.Text = "";
lbl2.ID = "lblAssocIncRec2" + lblcount.Text;
newCell3.Controls.Add(lbl2);
newRow.Cells.Add(newCell3);
TableCell newCell4 = new TableCell();
newCell4.ID = "tdAssocIncRec4" + lblcount.Text;
DropDownList ddlb = new DropDownList();
ddlb.ID = "ddlbAssocIncRec" + lblcount.Text;
newCell4.Attributes.Add("align", "left");
newCell4.Controls.Add(ddlb);
ddlb.Items.Add(new ListItem("--Select--", "0"));
ddlb.Items.Add(new ListItem("1", "1"));
ddlb.Items.Add(new ListItem("2", "2"));
newRow.Cells.Add(newCell4);
someTBL.Rows.Add(newRow);
ViewState["No_of_Rows"] = Convert.ToInt32(lblcount.Text);
lblcount.Text = Convert.ToString(Convert.ToInt32(lblcount.Text) + 1);
}
受保护的无效页面加载(对象发送方,事件参数e)
{
int intRowCount=Convert.ToInt32(视图状态[“没有行]);
对于(inti=1;i您需要做的是每次在页面的Load事件或Init事件中重新创建这些值。这样可以检索这些值
然后,我会找到您创建的控件,并将它们添加到viewstate中的列表中(因此当用户离开页面时它会被销毁)
然后,您就可以存储可以返回的值。查看生命周期:您好,Philip,谢谢您的回答。我已在页面加载事件中重新创建了这些值。一切正常。但我无法访问它们。例如,在您的PC中运行代码后,如果您编写,请单击浏览器输出,然后单击“查看源代码”e无法看到动态创建的控件。请您协助。您是在viewstate中创建的吗?
ViewState["DynamicControls"] = list;