グリッドに複数のチェック ボックスがあります。私のコードサンプルは次のとおりです。
<asp:Panel ID="FeatureGridViewPanel" runat="server" Visible="true" Width="100%">
<div class="topline"></div>
<div class="linebreak"></div>
<div style="float:left; width:90%;">
<asp:GridView ID="FeatureListGridView" runat="server" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#666666" GridLines="None" Width="100%">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="FeatureNameHeaderLabel" runat="server" Text="Feature Name "
CssClass="GridViewTH"></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<div style="display: none;">
<asp:Label ID="FeatureIDLabel" runat="server" Text='<%#Eval("FeatureID")%>'>' ></asp:Label>
</div>
<asp:Label ID="FeatureNameLabel" runat="server" CssClass="GridViewLabel"
Text='<%#Eval("FeatureName")%>'>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="FeatureStatusHeaderLabel" runat="server" Text="Feature Status"
Class="GridViewTH"></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="FeatureStatusCheckBox" runat="server" Checked='<%#Eval("isEnabled") %>'
/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle />
</asp:GridView>
</div>
<div class="topline"></div>
<div class="linebreak"></div>
<div style="margin:4px; float:right;">
<asp:Button ID="CancelAllChagesButton" runat="server" Text="Cancel All Changes"
OnClick="CancelAllChagesButton_Click" CssClass="CCButtonEnabled" />
<asp:Button ID="SaveAllChangesButton" runat="server" Text="Save All Changes"
OnClick="SaveAllChangesButton_Click" CssClass="CCButtonEnabled" />
<asp:Button ID="ChangePlanButton" runat="server" Text="Change Plan" OnClick="ChangePlanButton_Click"
CssClass="CCButtonEnabled" />
<asp:Button ID="UpgradeFeatureButton" runat="server" Text="Update Feature"
OnClick="UpgradeFeatureButton_Click" CssClass="CCButtonEnabled" />
</div>
</asp:Panel>
変更がない場合は、SaveAllChangesButton と CancelAllChagesButton を無効にしたいだけです。チェックボックスに変更がある場合、SaveAllChangesButton と CancelAllChagesButton を有効にしたい。そうするために、私は次のようなjqueryコードを持っています:
$(document).ready(function () {
$('[id$=SaveAllChangesButton]').attr('disabled', 'disabled');
$('[id$=CancelAllChagesButton]').attr('disabled', 'disabled');
$(".disabled").click(function () {
return false;
});
$('[id$=FeatureStatusCheckBox]').click(function () {
$('[id$=CancelAllChagesButton]').removeAttr('disabled', 'disabled');
$('[id$=SaveAllChangesButton]').removeAttr('disabled', 'disabled');
});
});
変更がない場合は正常に動作しますが、チェックボックスの一部に変更がある場合は、SaveAllChangesButton と CancelAllChagesButton を有効にする必要がありますが、ここでは私の状態ではこのボタンは有効になっていません。また、ユーザーが CancelAllChagesButton をクリックすると、SaveAllChangesButton と CancelAllChagesButton が無効になります。どうすればこれを達成できますか?