【发布时间】:2011-07-13 07:13:39
【问题描述】:
我根据我在下拉列表中选择的 no 创建了动态控件。 为此,我在下拉列表的 SelectedIndexChanged 事件中编写了如下代码:
int N = Convert.ToInt32(ddlpassenger.SelectedValue);
Table t = new Table();
for (int i = 0; i < N; i++)
{
TableRow row = new TableRow();
TableCell cell = new TableCell();
TextBox name = new TextBox();
name.ID = "txtname" + i;
cell.Controls.Add(name);
row.Cells.Add(cell);
t.Rows.Add(row);
PName_placeholder.Controls.Add(t);
}
我必须将数据保存在数据库中。 为此,我编写了用于在 button_click 事件中获取所创建控件的值的代码,如下所示:
string pname = "";
foreach (TableRow tr in t.Rows)
{
foreach (TableCell tc in tr.Cells)
{
foreach (Control c in tc.Controls)
{
if (c is TextBox)
{
if (c.ID.StartsWith("txtname"))
{
TextBox txt = (TextBox)t.FindControl(c.ID);
pname = txt.Text;
Session["pname1"] = pname;
}
}
}
}
}
但是我在这里没有得到价值,它得到了空值,那我该怎么办? 我的编辑代码如下:
protected void btnsave_Click(object sender, EventArgs e)
{
Table t11 = (Table)PName_placeholder.FindControl("tblname");
string pname = "";
foreach (TableRow tr in t11.Rows)
{
foreach (TableCell tc in tr.Cells)
{
foreach (Control c in tc.Controls)
{
if (c is TextBox)
{
if (c.ID.StartsWith("txtname"))
{
TextBox txt = (TextBox)t11.FindControl(c.ID);
pname = txt.Text;
Session["pname1"] = pname;
}
}
}
}
}
}
protected void ddlpassenger_SelectedIndexChanged(object sender, EventArgs e)
{
int N = Convert.ToInt32(ddlpassenger.SelectedValue);
Table t = new Table();
t.ID = "tblname";
for (int i = 0; i < N; i++)
{
TableRow row = new TableRow();
TableCell cell = new TableCell();
TextBox name = new TextBox();
name.ID = "txtname" + i;
cell.Controls.Add(name);
row.Cells.Add(cell);
t.Rows.Add(row);
PName_placeholder.Controls.Add(t);
}
}
Asp.net c# 谢谢。
【问题讨论】:
-
您是否可能有另一个文本框在另一个单元格中具有空值?目前循环的编写方式,在找到您要查找的值后,它将继续循环。假设其他一切都正常工作,您应该只需要打破所有嵌套循环。