2017-11-27 3 views
0

ヘッダーチェックボックスがあり、各行にチェックボックスがあるグリッドビューがあります。ヘッダチェックボックスをクリックすると、子チェックボックスがチェックされ、私はすべての3番目のセルの値が行をチェックし取得する必要があります..私はJavascriptの機能以下のようにやっている。この目的のためヘッダチェックボックスがチェックされているときに、チェックされた各行に対して特定のセル値を取得する

:(より良く理解するために)

function toggleSelection(source) { 
    $("#MainContent_gvCG input[id*='chkCert']").each(function (index) { 
     if(source.checked) { 
      if (this.checked) { 

       ////Here i need to access the third cell values of all rows 

      } 
     } 
    }); 
} 

サンプルテーブル形式:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> 
</script> 
<table border="1"> 
    <tr> 
    <th>CFS Name</th> 
    <th>Amount</th> 
    <th>TCFSA</th> 
    <th>CODEX</th> 
    <th><input type="checkbox" id="chkHeader"/></th> 
    </tr> 
    <tr> 
    <td>TRANSWORLD GLS INDIA</td> 
    <td>Abc</td> 
    <td>cg</td> 
    <td>de</td> 
    <td><input type="checkbox" class="chkCert"></td> 
    </tr> 
    ................ 
    ............... 
    .............. 
    </table> 

、これが私のGridViewのです:

 <asp:GridView ID="gvPRCertInfo" runat="server" AutoGenerateColumns="False" GridLines="None"      
      OnRowDataBound="gvPRCertInfo_RowDataBound" 
      CssClass="data responsive"> 
      <Columns> 
       <asp:TemplateField HeaderText="Select" SortExpression=""> 
       <HeaderTemplate> 
        <asp:CheckBox ID="chkboxSelectAll" runat="server" AutoPostBack="true" onclick="toggleSelection(this);" OnCheckedChanged="chkboxSelectAll_CheckedChanged"/> 
        </HeaderTemplate> 
         <ItemTemplate> 
         <asp:CheckBox ID="chkCert" AutoPostBack="true" OnCheckedChanged="chkCert_CheckedChanged" runat="server" />          
         <input type="hidden" id="hdnCertId" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "CertId") %>' /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:BoundField DataField="CertificateID" HeaderText="Certificate ID" HeaderStyle-HorizontalAlign="Center" /> 
     .................... 
     ..................... 
     .............. 
     </Columns>        
    </asp:GridView> 

いずれかがこれ以外の任意のより良い解決策も歓迎..すべてのチェックを行の第3のセル値にアクセスする方法を、この上の任意のアイデアを提案してくださいでした。

修正コード:

function toggleSelection(source) { 
    $('#<%= gvPRCertInfo.ClientID %> input[id*="chkCert"]').each(function() { 
      if (source.checked) { 
       alert("source checked"); 
       if (this.checked) { 
        alert("child chk"); 
        var allVlues = $(this).closest('tr').children('td:eq(4)').html(); 
        alert(allVlues); 

       } 
      } 
     }); 
    } 

私はこのアラート警告( "子CHK")ができ昇給はないです。のいずれかをお手伝いください。

+0

'$(この).prev()の変化に気づく前のページ();'第三TDを選択します。 '.text()'を使って内容を取得します。 –

+0

あなたのコンソールで遊んでみてください。 'console.log(this)'とは何ですか?あなたの関数の最初の行に 'window.AA = this;'のようなことをすると、あなたのコンソールの 'AA'(最後の関数呼び出しの' this'です)にアクセスして、あなたがどのような状態であるかを見ることができますそうではないと仮定している。 – hunteke

+0

'$("#MainContent_gvCG input [id * = 'chkCert']:チェックされた)) 'を使用するとチェックされたチェックボックスだけがループしますので、' if(this.checked) 'を使用する必要はありません。 –

答えて

1

お試し$(this).parent().parent().find('td:eq(2)').text();また$("#MainContent_gvCG input.chkCert:checkbox").each(....

function toggleSelection(source) { 
 
    $("#MainContent_gvCG input.chkCert:checkbox").each(function (index) { 
 
     if(source.checked) { 
 
      if (this.checked) { 
 
      let thirdVal = $(this).parent().parent().find('td:eq(2)').text(); 
 
     console.log(thirdVal); 
 
      } 
 
     } 
 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table border="1" id="MainContent_gvCG" > 
 
    <tr> 
 
    <th>CFS Name</th> 
 
    <th>Amount</th> 
 
    <th>TCFSA</th> 
 
    <th>CODEX</th> 
 
    <th><input type="checkbox" id="chkHeader" onclick="toggleSelection(this);"/></th> 
 
    </tr> 
 
    <tr> 
 
    <td>TRANSWORLD GLS INDIA</td> 
 
    <td>Abc</td> 
 
    <td>cg</td> 
 
    <td>de</td> 
 
    <td><input type="checkbox" class="chkCert"></td> 
 
    </tr> 
 
    <tr> 
 
    <td>Test</td> 
 
    <td>mnl</td> 
 
    <td>opq</td> 
 
    <td>xyz</td> 
 
    <td><input type="checkbox" class="chkCert" checked></td> 
 
    </tr> 
 
</table>

0

これを単純なクライアント側のデータ収集として扱うことができる場合は、必要なものだけを選択してください。例:

var $thirdCell = $(this).parent().children(':nth-child(3)'); 
console.log('Text: ', $thirdCell.text()); 
console.log('HTML: ', $thirdCell.html()); 

「値」の意味によって、テキストまたはHTMLを取得できます。

+0

あなたはその問題を調べてください私は私のコードを更新しました..私はその警告を発生させることができません –

+0

私はこのifループに入ることができませんif(this.checked){ alert( "チャイルドチャック "); ....このチェックは、各行のチェックボックスです..どのように私はこれに入ることができます....あなたは何かを持っていますか? –

+0

右。私が上記のコメントで尋ねたように、 'this 'の価値は何ですか?あなたの機能が実行されているというあなたの保証は何ですか? – hunteke

関連する問題