私はhereのgridviewのすべてを選択チェックボックス機能を使用しています。ここで使用されるスクリプトには1つの問題があります。Gridviewすべてのチェックボックスのチェックを発行
ヘッダチェックボックスを選択すると、すべてのテンプレート(行)チェックボックスが選択されます。テンプレートchecboxをすべて選択解除すると、ヘッダーchecboxはまだチェックされたままです。その場合にヘッダチェックボックスの選択を解除するには?
助けてください!
私はhereのgridviewのすべてを選択チェックボックス機能を使用しています。ここで使用されるスクリプトには1つの問題があります。Gridviewすべてのチェックボックスのチェックを発行
ヘッダチェックボックスを選択すると、すべてのテンプレート(行)チェックボックスが選択されます。テンプレートchecboxをすべて選択解除すると、ヘッダーchecboxはまだチェックされたままです。その場合にヘッダチェックボックスの選択を解除するには?
助けてください!
まず、CheckBox1
にCss Classを追加し、後でclass="chk-all"
に使用します。
次に、ItemTemplateチェックボックスにjavascript関数を追加します。
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" onclick="UnselectAllOption()" />
</ItemTemplate>
次に、いくつかのjQueryを使用して、class="chk-all"
のチェックボックスを選択します。どれもいずれかが選択されていないため、他のチェックボックスの1つがクリックされた、あなたが単一のものを選択しているので、HeaderTemplateのチェックボックスがチェックされるべきではない
function UnselectAllOption(){
$('.chk-all').attr("checked", false");
}
は、私はすぐに未チェックに設定します。またはすべてのチェックボックスが既にチェックされています。つまり、チェックされていない他のチェックボックスを変更しているときに、HeaderTemplateのチェックボックスをチェックしないでください。
編集
P.S.この回答は、jQuery javascriptライブラリにスクリプトリファレンスを追加する必要があります。
これは、.NETの方法ですが、しかし、jQueryのソリューションは非常にクリーンです:
スクリプト:
function resetParent(parentRow)
{
document.getElementById(parentRow).checked = false;
}
マークアップ:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
Caption="Pick Some Technologies" BackColor="White" BorderColor="#CC9966" OnRowDataBound="ObjectDataSource1__RowDataBound"
BorderStyle="None" BorderWidth="1px" CellPadding="4">
<Columns>
<asp:TemplateField HeaderText="Include" SortExpression="Include">
<HeaderTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" onclick="changeAllCheckBoxes(this)" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Technology" />
</Columns>
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
</asp:GridView>
コードビハインド:
private CheckBox parentCheckBox = null;
protected void ObjectDataSource1__RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
parentCheckBox = (CheckBox)e.Row.FindControl("CheckBox1");
}
if(e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox childCheckBox = (CheckBox)e.Row.FindControl("CheckBox1");
childCheckBox.Attributes.Add("onclick","resetParent('" + parentCheckBox.ClientID + "')");
}
}