2011-12-23 23 views
1

私のCheckBoxの無効なプロパティをtrueに設定しようとしています。しかし、私がポストバックを行うと、CheckBoxはまだ有効になっていますか?asp.netチェックボックスが無効になっていないのはなぜですか?

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 

<head runat="server"> 
    <title></title> 
    <script> 
     $(document).ready(
      function() { 
       $("#CheckBoxList1_0").attr('disabled',true); 
      } 
    ); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:CheckBoxList ID="CheckBoxList1" runat="server"> 
      <asp:ListItem>een</asp:ListItem> 
      <asp:ListItem>twee</asp:ListItem> 
      <asp:ListItem>drie</asp:ListItem> 
     </asp:CheckBoxList> 
    </div> 
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
    </form> 
</body> 
</html> 

のC#:disabledなどのCSSプロパティはjQueryを使って追加、またはそのことについてはどのような方法で追加

protected void Button1_Click(object sender, EventArgs e) 
     { 
      if (!CheckBoxList1.Items[0].Enabled) 
      { 
       Response.Write("it is disabled"); 

      } 
     } 
+0

3つの別々の 'CheckBox'の代わりに' CheckBoxList'を使う理由はありますか?本当の 'CheckBox'を使うと、' Enabled'プロパティを使って 'false'に設定することができます – NoLifeKing

答えて

2

、ときにサーバーに投稿しないだろうあなたはポストバックを行います。

どのチェックボックスが無効になっているかを本当に把握する必要がある場合は、これらの要素のIDを隠し入力に格納することができます。値はになります。がサーバーに送信されます。あなたが唯一のクライアントである変更はJavaScriptを使用してチェックボックスを変更すると

このような何かが

<input type="hidden" runat="server" id="yourHiddenInput" /> 

$("form").submit(function(){ 
    var allIds = []; 
    $("input[type='checkbox']:disabled").each(function() { 
     allIds.push($(this).attr("id")); 
    }); 
    $("#yourHiddenInput").val(allIds.join()); 

    //form is about to post. When it does, 
    //you'll be able to read the ids via yourHiddenInput.Value 
}); 
+0

チェックボックスがあり、それをjQueryで無効にすると(無効に設定=無効)、効果がありますあなたが期待するものではないにしても、サーバー上で。無効なセットでは、サーバー側はそのコントロールの "checked"値を無視します。無効にしないと、サーバーはチェックボックスの正しい値を確認します。これは、サーバーのitem.Enabled、またはitem.Attributes ["disabled"]の概念には影響しません。 – philw

1

を動作するはずです、私は、チェックボックスのためのビューステート情報が更新されないことを信じているので、ときにポストバックをページがまだチェックされていないことがページで分かる限り発生します

+0

この例では、チェックボックスをチェックしていません。 でも、あなたは間違っています.jsでチェックボックスの "checked"状態を変更すると、期待通りにサーバーに伝播します。 – philw

関連する問題