根据选中的列在 asp.net 网格行中将文本框设置为只读
Make text box read only in a asp.net grid row based on checked columns
在下面的网格中,如果行中的所有复选框都未选中,我想禁用每行中的文本框。如果连续选中一个复选框,则需要启用该文本框。
希望在客户端使用 jquery。请帮忙
下面是我写的代码。一些代码行重复如何优化它??
$(function () {
$('#MainContent_G2 > tbody > tr').each(function (index, row) {
var checkedArr = $(row).find('input[type="checkbox"]:checked');
if (checkedArr.length === 0) {
var textbox = $(row).find('input[type="text"]');
$(textbox).attr('readonly', true);
}
$(row).find('input[type="checkbox"]').each(function(index, checkbox) {
$(checkbox).change(function () {
if (this.checked) {
$(this).closest("tr").find('input[type="text"]').attr('readonly', false);
}
var checkedArr = $(row).find('input[type="checkbox"]:checked');
if (checkedArr.length === 0) {
var textbox = $(row).find('input[type="text"]');
$(textbox).attr('readonly', true);
}
});
});
});
});
<asp:GridView ID="G2" ShowHeader="False" runat="server" AutoGenerateColumns="False" OnRowDataBound="G2_RowDataBound">
<HeaderStyle BorderStyle="Solid" HorizontalAlign="Left" BackColor="LightGray" />
<FooterStyle BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray" />
<RowStyle CssClass="gridRows" />
<Columns>
<asp:BoundField DataField="REVIEWQUESTIONS_DESC" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkbox_Yes" runat="server" Checked='<%# Eval("ANSWER_YES")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkbox_No" runat="server" Checked='<%# Eval("ANSWER_NO")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkbox_NA" runat="server" Checked='<%# Eval("ANSWER_NA")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox runat="server" CssClass="NoLine" ID="txtbox_Notes" Text='<%# Eval("INCIDENTREVIEW_NOTES")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
你可以这样做:
Text='<% # Eval("NameYourUsing") %>' Enabled="false"
在下面的网格中,如果行中的所有复选框都未选中,我想禁用每行中的文本框。如果连续选中一个复选框,则需要启用该文本框。
希望在客户端使用 jquery。请帮忙 下面是我写的代码。一些代码行重复如何优化它??
$(function () {
$('#MainContent_G2 > tbody > tr').each(function (index, row) {
var checkedArr = $(row).find('input[type="checkbox"]:checked');
if (checkedArr.length === 0) {
var textbox = $(row).find('input[type="text"]');
$(textbox).attr('readonly', true);
}
$(row).find('input[type="checkbox"]').each(function(index, checkbox) {
$(checkbox).change(function () {
if (this.checked) {
$(this).closest("tr").find('input[type="text"]').attr('readonly', false);
}
var checkedArr = $(row).find('input[type="checkbox"]:checked');
if (checkedArr.length === 0) {
var textbox = $(row).find('input[type="text"]');
$(textbox).attr('readonly', true);
}
});
});
});
});
<asp:GridView ID="G2" ShowHeader="False" runat="server" AutoGenerateColumns="False" OnRowDataBound="G2_RowDataBound">
<HeaderStyle BorderStyle="Solid" HorizontalAlign="Left" BackColor="LightGray" />
<FooterStyle BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray" />
<RowStyle CssClass="gridRows" />
<Columns>
<asp:BoundField DataField="REVIEWQUESTIONS_DESC" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkbox_Yes" runat="server" Checked='<%# Eval("ANSWER_YES")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkbox_No" runat="server" Checked='<%# Eval("ANSWER_NO")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkbox_NA" runat="server" Checked='<%# Eval("ANSWER_NA")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox runat="server" CssClass="NoLine" ID="txtbox_Notes" Text='<%# Eval("INCIDENTREVIEW_NOTES")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
你可以这样做:
Text='<% # Eval("NameYourUsing") %>' Enabled="false"