我遇到的问题是我的JQuery返回null。
这是我的JQuery(包含在.js中)....
$(document).ready(function() {
var chkBox = $("#gvEntryPoints input[id$='cbxIncludeAll']");
chkBox.click(function() {
$("#gvEntryPoints input[type='checkbox']").attr('checked', chkBox.is(':checked'));
});
// To deselect CheckAll when a GridView CheckBox is unchecked
$("#gvEntryPoints INPUT[type='checkbox']").click(function(e) {
if (!$(this)[0].checked) {
chkBox.attr("checked", false);
}
});
}
看来chkBox永远不会被分配,因此永远不会分配点击事件。
这是我的HTML ...
<asp:GridView CssClass="GridView" ID="gvEntryPoints" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField Visible="false">
<ItemStyle CssClass="GridView_Item" />
<ItemTemplate>
<asp:Label runat="server" ID="lblEntryPointListItemId" Text='<%# Eval("EntryPointListItemId") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField Visible="false">
<ItemStyle CssClass="GridView_Item" />
<ItemTemplate>
<asp:Label runat="server" ID="lblEntryPointId" Text='<%# Eval("EntryPointId") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Include">
<ItemStyle CssClass="GridView_Item" />
<HeaderTemplate>
<asp:CheckBox runat="server" ID="cbxIncludeAll" CssClass="label" Checked="true" Text="Include<br/>All" TextAlign="Left" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbxEPInclude" name="EPInclude" CssClass="EPCheckBox" Checked="true" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我的HTML位于.ascx中。 .ascx包含在.aspx内容页面中。我在主页面上包含了JQuery库(我已尝试过头部,身体顶部和身体底部)。
答案 0 :(得分:3)
问题是该复选框不会在客户端使用id cbxIncludeAll呈现。它将具有由asp.net生成的ID。比如crtl_Gridview1_001_cbxIncludeAll或类似的东西。查看客户端来源以查看名称。
您还可以使用每个控件的clientID属性来获取客户端ID。