在通过javascript和回发启用后,ListBox中的选定项不正确

时间:2013-01-30 19:15:13

标签: javascript asp.net vb.net postback

很奇怪。我有一个javascript函数来启用列表框,它在加载时被禁用。这个javascript函数可以正常启用或禁用列表框。但是,在用户单击“保存”按钮后,它没有获得新选择的项目;始终通过数据绑定保留旧的选定项目。我在页面加载上检查了isPostback。如果它不是isPostback,则列表框不会再次加载。有人会给我提示解决这个问题。 Thansk提前。

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

1 个答案:

答案 0 :(得分:0)

要检查的第一件事是我们不会在每个回发上'重新绑定'。如果你这样可以解释为什么你得到你的开始。您可以将代码发布到绑定ListBox的地方吗?

如果在回发时禁用了控件,那么它将不会发布'new'值,它将从ViewState最初为contrl存储的内容中移除,因此请确保在回发之前正确启用它。

以下是该行为示例的链接:

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

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

<form id="form1" submitdisabledcontrols="true" runat="server">