我动态填充表格,其中包含一个带有与之关联的ID的复选框,然后将其显示给用户。我没有显示部分的问题。 在用户检查了一些指定的复选框并点击提交按钮后,我想得到他的选择,检查的Checkbox及其相关的Id,但在回发期间,我的表既没有我动态添加的任何行,也没有用户的选择。非常感谢任何帮助。
干杯 Ip Doh
我的aspx页面如下
<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="dummyLabel" runat="server" Text="Label"></asp:Label>
<asp:Button ID="submitButton" onclick="async_Click" runat="server" Text="Submit" />
<asp:Table ID="usrTable" EnableViewState="true" runat="server">
<asp:TableHeaderRow>
<asp:TableHeaderCell Text="Id"/>
<asp:TableHeaderCell Text="Customer Name"/>
</asp:TableHeaderRow>
</asp:Table>
</ContentTemplate>
</asp:UpdatePanel>
我在代码文件中有以下内容
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CreateTable();
}
if (IsPostBack)
{
List<int> choices = GetUserChoices();
//Do Something with user choices
}
}
protected List<int> GetUserChoices()
{
List<int> choices = new List<int>();
foreach (TableRow row in usrTable.Rows)
{
CheckBox cb = row.Controls[0] as CheckBox;
if ((cb != null) && (cb.Checked))
{
choices.Add(int.Parse(cb.Text));
}
}
return choices;
}
void CreateTable()
{
dummyLabel.Text = DateTime.Now.ToString();
for (int i = 0; i < 3; i++)
{
TableCell cell1 = new TableCell();
CheckBox cb = new CheckBox();
cb.Text = i.ToString();
cb.AutoPostBack = true;
cb.EnableViewState = true;
cell1.Controls.Add(cb);
TableCell cell2 = new TableCell();
cell2.Text = String.Format("Clm : {0} - Row : {1}", 2, i);
TableRow row = new TableRow();
row.Cells.Add(cell1);
row.Cells.Add(cell2);
usrTable.Rows.Add(row);
}
}
标签值是持久的,而我的表没有我添加的任何行。
答案 0 :(得分:0)
doh,我忘了设置CheckBox控件的id。在回发时设置相同的ID允许使用用户的选择更新CheckBox状态。
void CreateTable()
{
dummyLabel.Text = DateTime.Now.ToString();
for (int i = 0; i < 3; i++)
{
TableCell cell1 = new TableCell();
CheckBox cb = new CheckBox();
cb.Text = i.ToString();
cb.AutoPostBack = true;
cb.EnableViewState = true;
cb.ID = i.ToString();
cell1.Controls.Add(cb);
TableCell cell2 = new TableCell();
cell2.Text = String.Format("Clm : {0} - Row : {1}", 2, i);
TableRow row = new TableRow();
row.Cells.Add(cell1);
row.Cells.Add(cell2);
usrTable.Rows.Add(row);
}
}