0

無効としてロードできるCheckBoxListがありますが、クライアント側のアクションの後で有効にする必要がある場合があります。

jQueryを使用してチェックボックスを有効にすることはできますが、問題は、ページを送信した後、ChceckBoxListで選択されたアイテムが認識されないことです(おそらくコントロールがViewStateにないため)。

シナリオの簡単な例:

<asp:CheckBoxList ID="chkList1" runat="server" Enabled="false" ClientIDMode="Static">
       <asp:ListItem Value="123" />
       <asp:ListItem Value="456" />
       <asp:ListItem Value="789" />
</asp:CheckBoxList>

$(document).ready(function()
{
    $("#divEnable").click(function()
    {
        var inputs = $("#chkList1").find("input");
        for (var i = 0; i < inputs.length; i++)
        {
            inputs[i].disabled = false;
        }
    });
}

次に、チェックボックスを有効にし、それらを選択してポストバックを送信した後、選択したアイテムは認識されません。

のように、アイテムを「手動で」無効にしてみました

chkList1.Items[0].Attributes.Add("disabled", "disabled");

しかし、それは機能しませんでした(disabled属性は入力コントロールではなく包含スパンにアタッチされていました)。

チェックボックスの選択を追跡するために非表示フィールドを使用することも検討しましたが、グリッド内に複数のCheckBoxListがあるため、非常にエレガントではありません。

これを回避する方法はありますか?

4

3 に答える 3

1

これを試して:

$(document).ready(function()
{
    $("#divEnable").click(function()
    {
        var inputs = $("#chkList1").find("input")
            .each(function(){
                            //if($(this).is(":disabled"))
                            //{
                               $(this).prop("disabled",true);
                            //}
                          });      
});

参照:
jQuery asp control .prop(“disabled”, “”) IE 9 でチェック ボックスを有効にしない
無効チェック ボックスを処理できません

于 2012-05-16T11:04:32.607 に答える
0

これを使用できます

  for (i = 0; i < document.forms[0].length; i++)
   {
      e = document.forms[0].elements[i];
      if (e.id.indexOf("chklist") != -1)
      {
           e.disabled = false;
      }
  }
于 2012-05-16T11:14:12.800 に答える