1

这很奇怪。我有一个javascript函数来启用加载时禁用的列表框。这个 javascript 函数可以很好地启用或禁用列表框。但是用户点击保存按钮后,并没有得到新的选中项;始终通过数据绑定保留旧的选定项目。我检查了页面加载时的 isPostback。如果不是 isPostback,则不会再次加载列表框。有人会给我解决这个问题的提示吗?提前谢谢。

function enableProject() {           
    var chk=document.getElementById('chkProject');
if (chk.checked) {
    document.getElementById('listProject').disabled = false;
     }
else {
         document.getElementById('listProject').disabled = true;
     }
}

有我的 asp.net 页面

<asp:ListBox id="listProject" runat="server"
    SelectionMode="Multiple" Rows="5" class="w200"  Enabled="false"/>
<asp:checkbox id="chkProject" runat="server"
    Text="Enable" onclick="enableProject()" />

以下代码用于检查ListBox

For Each projectItem In listProject.Items
    If projectItem.Selected Then
        'create a new project object
        Dim objProj As New Data.Project( ID, projectItem.Value)
        objProjects.Add Project(objProj)
    End If
Next
4

1 回答 1

0

首先要检查的是我们没有在每次回发时“重新绑定”。如果你是那将解释为什么你得到你开始的东西。你能把你的代码贴在你绑定的地方ListBox吗?

如果控件在回发时被禁用,则它不会发布“新”值,并且只会脱离 ViewState 最初为控件存储的内容,因此请确保在回发之前确实启用它。

这是该行为示例的链接:

http://aspnet.4guysfromrolla.com/demos/ProblemNotReturningDisabledControls.aspx

如果您想测试这是否是问题,请在您的表单标签中设置以下属性,这将强制回发禁用的控件:

<form id="form1" submitdisabledcontrols="true" runat="server">
于 2013-01-30T19:17:54.990 回答