0

私のユーザーコントロールには、グリッドビューがあります。ヘッダーチェックボックスを使用して、グリッドビュー内のすべてのチェックボックスを選択/選択解除したい。そこで、jQueryを使用して実装します。

function SelectAllCheckboxes(chk) {
    $('#<%=gridView.ClientID %> >tbody >tr >td >input:checkbox').attr('checked', chk.checked);
}

グリッドビューのヘッダーテンプレートにこれを入れました

<asp:CheckBox ID="chkHeader" runat="server"  OnClick="javascript:SelectAllCheckboxes(this);"/>

それはうまくいきます。しかし、別の開発者が私のユーザーコントロールをaspxに2回入れた場合、うまく機能しません。

1番目または2番目のGridviewのヘッダーチェックボックスをオンにすると、2番目のGridViewのチェックボックスのみがオンまたはオフになります。

最初のGridviewのヘッダーチェックボックスをオンにしても、最初のGridViewのチェックボックスがチェックされません。

どのような変更が必要ですか?

前もって感謝します。

4

1 に答える 1

3

メソッドを使用できますclosest()

function SelectAllCheckboxes(chk) {
    $(chk).closest('table >tbody >tr >td >input:checkbox').attr('checked', chk.checked);
}

jquery のドキュメントから: 「セレクターに一致する最初の要素を取得します。現在の要素から始まり、DOM ツリーを上に向かって進みます。」

編集:そのように機能するかどうかはわかりません。そうでない場合は、次を試すことができます。

function SelectAllCheckboxes(chk) {
    $(chk).closest('table').find('>tbody >tr >td >input:checkbox').attr('checked', chk.checked);
}

それが役に立てば幸い。

于 2012-09-24T04:03:58.717 に答える