-3

In the below grid, I wanted to disable textbox in each row if all the checkboxes in the row are unchecked. And if a check box is checked in a row then need to enable the textbox.

Wanted this in client side using jquery. Please help Below is the code I have written. Some code line are repeating how to optimize it more ??

 $(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>
Bharathg
  • 13
  • 4

1 Answers1

0

You could do something like this:

Text='<% # Eval("NameYourUsing") %>' Enabled="false" 
Jon P
  • 19,442
  • 8
  • 49
  • 72
JayTeeEye
  • 56
  • 7