無効としてロードできる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があるため、非常にエレガントではありません。
これを回避する方法はありますか?