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 に答える