根据选中的列在 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"