У меня есть сценарий, который я использовал для отключения текстового поля всякий раз, когда флажок снят в gridview:
$(function () {
//Enable Disable all TextBoxes when Header Row CheckBox is checked.
$("[id*=chkHeader]").bind("click", function () {
var chkHeader = $(this);
//Find and reference the GridView.
var grid = $(this).closest("table");
//Loop through the CheckBoxes in each Row.
$("td", grid).find("input[type=checkbox]").each(function () {
//If Header CheckBox is checked.
//Then check all CheckBoxes and enable the TextBoxes.
if (chkHeader.is(":checked")) {
$(this).attr("checked", "checked");
var td = $("td", $(this).closest("tr"));
$("input[type=text]", td).removeAttr("disabled");
}
else {
$(this).removeAttr("checked");
var td = $("td", $(this).closest("tr"));
$("input[type=text]", td).attr("disabled", "disabled");
$("input[type=text]", td).val = ""
}
});
});
//Enable Disable TextBoxes in a Row when the Row CheckBox is checked.
$("[id*=chkResult]").bind("click", function () {
//Find and reference the GridView.
var grid = $(this).closest("table");
//Find and reference the Header CheckBox.
var chkHeader = $("[id*=chkHeader]", grid);
//If the CheckBox is Checked then enable the TextBoxes in thr Row.
if (!$(this).is(":checked")) {
var td = $("td", $(this).closest("tr"));
$("input[type=text]", td).attr("disabled", "disabled");
$("input[type=text]", td).val = ""
}
else {
var td = $("td", $(this).closest("tr"));
$("input[type=text]", td).removeAttr("disabled");
}
//Enable Header Row CheckBox if all the Row CheckBoxes are checked and vice versa.
if ($("[id*=chkResult]", grid).length == $("[id*=chkResult]:checked", grid).length) {
chkHeader.attr("checked", "checked");
}
else {
chkHeader.removeAttr("checked");
}
});
});
Код ASP:
<table>
<tr>
<asp:Panel ID="pnlItems" runat="server" Height="100%">
<td colspan="3" class="PrimaryLabelTop" style="height: auto" >
<asp:Label ID="lbItems" runat="server" CssClass="PrimaryLabel" meta:resourcekey="lblNecropsyFoundResource1" >
Necropsy: Itemized Information
</asp:Label>
<br />
<br />
<asp:GridView ID="gvItems" runat="server" EmptyDataText="No data available." Width="100%" DataSourceID="dsItems" EnableModelValidation="True" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="ValueID" HeaderText="ValueID" SortExpression="NecropsyValueID" InsertVisible="False" ReadOnly="True" Visible="false" />
<asp:BoundField DataField="GroupE" HeaderText="Group Description" SortExpression="GroupE" ReadOnly="true"/>
<asp:BoundField DataField="ItemE" HeaderText="Item Description" SortExpression="ItemE" ReadOnly="true"/>
<asp:TemplateField HeaderStyle-Width="10%" HeaderStyle-HorizontalAlign="Center" ItemStyle-Width="10%" ItemStyle-HorizontalAlign="Center">
<HeaderTemplate>
<asp:CheckBox ID="chkHeader" runat="server"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkResult" runat="server" Checked='<%# IIf(Eval("Result").ToString() = "Selected", True, False) %>' AutoPostBack="True"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comment" SortExpression="Commment">
<ItemTemplate>
<asp:TextBox ID="txtComment" Visible='<%# Bind("AllowMemo")%>' runat="server" Text='<%# Bind("Comment") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ValueID" HeaderText="ValueID" InsertVisible="False" ReadOnly="True" SortExpression="ValueID" Visible="false"/>
</Columns>
</asp:GridView>
<br />
<asp:ObjectDataSource ID="dsItems" runat="server" SelectMethod="GetItemValues" TypeName="HealthWeb.HealthWS.Health">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="SampleID" QueryStringField="QS_LABSAMPLE" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
</td>
</asp:Panel>
</tr>
<tr>
<td class="PrimaryLabelTop" />
</tr>
<tr>
<td>
<asp:Button ID="btnSave" runat="server" Text="Save" meta:resourcekey="btnSaveResource1" height="26px" style="text-align: center" width="60px" />
<asp:Button ID="btnClose" runat="server" Text="Close" meta:resourcekey="btnCloseResource1" height="26px" style="text-align: center" width="60px" />
</td>
</tr>
</table>
Проблема 1: [ chkHeader] работает нормально. Но когда я индивидуально пытаюсь проверить один [chkResult], он очищает [txtComment], но затем активирует все txtComment вместо конкретной строки, которую я только что проверяю. отключить текстовые поля, когда флажок снят?
Спасибо!