了解しました。1日を通して何度も提出して試みたドキュメントがたくさんあり、この問題を突き止めることはできないようです。1つのページ(折りたたみ可能なパネル内)に複数のグリッドビューがあり、そのうちの2つにはチェックボックスを含む列(0から7番目の列)があります。ヘッダー行のチェックボックスフィールドを使用して、ユーザーがすべてのチェックボックスを選択/選択解除できるようにしたい。私はJavascriptを使用してこれを達成することを好みますが、そこに到達できないようです。これは、ページ上の複数のテーブルで機能するように見えるので、私が好む方法です(間違っている場合は修正してください)。Firebugを使用すると、エラーは発生しませんでした。単に機能しておらず、理由がわかりません。
これが私のASP.NETコードです:
<asp:GridView ID="gvSerialNumberDetails" CellPadding="5" runat="server" CssClass="wind" AutoGenerateColumns="false">
<HeaderStyle CssClass="windHeader" />
<Columns>
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:BoundField DataField="Serial Number" HeaderText="Serial Number" />
<asp:BoundField DataField="Facility" HeaderText="Facility" />
<asp:BoundField DataField="Department" HeaderText="Department" />
<asp:BoundField DataField="EmpID" HeaderText="EmpID" />
<asp:BoundField DataField="Configuration" HeaderText="Config" />
<asp:BoundField DataField="Error" HeaderText="Errors" />
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkHeader" ToolTip="Select All" runat="server"
onclick="changeAllCheckBoxes(this)" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkItem" runat="server" ToolTip="Select this item" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
そして、これが私のJavascriptです。
<script type="text/javascript" language="javascript">
function changeAllCheckBoxes(sender) {
var gridViewRows = GetParentElementByTagName(sender, "table").rows;
for (var i = 1; i < gridViewRows.length; ++i) {
gridViewRows[i].cells[7].childNodes[0].checked = sender.checked;
}
}
function GetParentElementByTagName(element, tagName) {
var element = element;
while (element.tagName != tagName)
element = element.parentNode;
return element;
}
</script>
アップデート
了解しました。エラーが発生しました。"TypeError: element is null [Break On This Error] </tr><tr>"
これを修正するにはどうすればよいですか?DOMを上ってテーブル要素を見つける必要があるようですが、そうではありません。