【问题标题】:ASP.NET dynamically created check boxes won’t clear after post backASP.NET 动态创建的复选框在回发后不会清除
【发布时间】:2011-07-13 12:31:59
【问题描述】:

我有一个复选框列表,具体取决于用户从下拉框中选择的内容。当下拉框的值发生更改时,会发生回发。当复选框被更改时,也会发生回发。

我的问题是如果我从下拉框中选择一个值并说创建了 6 个复选框。我决定取消选中第 3 号框。然后改变主意并从下拉列表中选择一个新值。创建新复选框后,复选框 3 将保持未选中状态!?!

我真的无法找到解决此问题的方法,任何帮助或建议将不胜感激。我还应该提到,复选框和下拉菜单都在更新面板中运行。

这是生成复选框的代码:

For Each _element In myTools.getElements(templateID, myTools.getConnectionStringFromAirlineName(ddl_Source.SelectedValue)).Rows
Dim tr As New HtmlTableRow
Dim td_elementChecked As New HtmlTableCell
Dim cb_ID As New CheckBox
cb_ID.ID = templateID & _element.item(0)
// As you can see i'm setting check to true each time?
cb_ID.Checked = True
cb_ID.AutoPostBack = True
cb_ID.DataBind()
AddHandler cb_ID.CheckedChanged, AddressOf handlesGenericCheckedChange
Dim td_elementName As New HtmlTableCell
Dim lbl_elementName As New Label

td_elementName.Controls.Add(lbl_elementName)
td_elementChecked.Controls.Add(cb_ID)
tr.Cells.Add(td_elementChecked)
tr.Cells.Add(td_elementName)
table_elements.Rows.Add(tr)
table_elements.DataBind()
present = True
Next

复选框的id是有意义的,不能更改,我感觉这可能与它有关。 ID用于指示需要处理的内容。

【问题讨论】:

    标签: .net asp.net ajax checkbox postback


    【解决方案1】:

    在您重新加载控件之前,您可以创建一个新面板.. 这样您就可以重新开始。这只是一个建议。

    【讨论】:

    • 我已经开始这样做了。每次重新加载我都会创建表和行。所以问题依然存在。
    • 嗨 Aravind,我终于设法通过使用面板并将我正在创建的表格添加到其中来解决此问题。然后当我在面板上调用controls.clear() 进行刷新时。感谢您的提示!丹
    【解决方案2】:

    您将需要提供更多代码,但听起来您在更改下拉列表选择值时正在重新绘制所有复选框。如果是这种情况,那么新创建的复选框将不会保留您之前分配的“检查”。您可能需要做的是在回发数据时记录表单的当前状态。记录选择了哪些值,以便在必须重新绘制表单时应用这些更改。

    【讨论】:

    • 嗨考伊斯,感谢您的回复。问题是我不希望记住这些值,这就是我需要停止发生的事情?
    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多