选中GridView中的所有复选框
本文关键字:复选框 GridView 选中 | 更新日期: 2023-09-27 18:29:17
我在ASP.NET/C#中有一个GridView,它有一个CheckBoxField、一个BoundField和两个ButtonFields。所有4个都有一个标题,以明确列所代表的位置。在Page_Load事件中,我将GridView的Вatásource设置为已填充的DataTable。
我想让用户更容易使用它,并想在标题中做一个复选框。当用户选中该复选框时,应在GridView中选中所有复选框。我已经将CheckBoxField的HeaderText设置为<input type='checkbox' />
,现在它在标题中显示了一个复选框。
现在我想给这个复选框添加一个函数,当它被选中时,所有的复选框都会被选中,反之亦然。我试着用jQuery做这件事,但没有成功,因为我找不到一种方法给GridView中的所有复选框相同的ID或NAME。
当我选中标题中基于HTML的复选框时,是否发生了事件?如果是,哪个事件?如果没有,当我选中该复选框并从代码后面更改GridView时,我如何触发事件。
如果这些都不可能,我怎么能用另一种方式来做呢,用javascript、jQuery,或者用ASP.net控件。
我希望你能帮助我,但请不要指望我是一个代码大师。我是一家公司的实习生,那里需要一个具有此功能的系统。
更新:
谢谢大家帮助我。将DataSource返回到DataTable中最简单的方法是什么,因为我需要知道哪些行被选中,哪些行没有被选中?
使用jQuery,您可以在GridView中获得所有复选框,然后根据需要更改每个复选框的状态。您可以通过单击链接或按钮,或者任何您喜欢的方式来调用此javascript函数。
function CheckAll()
{
var updateButtons = jQuery('#<%=gvGridViewId.ClientID%> input[type=checkbox]');
updateButtons.each( function() {
// use this line to change the status if check to uncheck and vice versa
// or make it as you like with similar function
jQuery(this).attr("checked", !this.checked);
});
}
根据您的尝试此代码
在网格视图中
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="headerchkbox" runat="server" CssClass="chkheader" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBoxAssign" runat="server" CssClass="chkitems" />
</ItemTemplate>
</asp:TemplateField>
java脚本
<script type="text/javascript">
$(window).bind('load', function () {
var headerChk = $(".chkheader input");
var itemChk = $(".chkitems input");
headerChk.bind("click", function () { itemChk.each(function () { this.checked = headerChk[0].checked; })
});
itemChk.bind("click", function () { if ($(this).checked == false) headerChk[0].checked = false; });
});
</script>
这是我为您准备的一个示例。
ASPX
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
var allCheckBoxSelector = '#<%=GridView1.ClientID%> input[id*="chkAll"]:checkbox';
var checkBoxSelector = '#<%=GridView1.ClientID%> input[id*="chkSelected"]:checkbox';
function ToggleCheckUncheckAllOptionAsNeeded() {
var totalCheckboxes = $(checkBoxSelector),
checkedCheckboxes = totalCheckboxes.filter(":checked"),
noCheckboxesAreChecked = (checkedCheckboxes.length === 0),
allCheckboxesAreChecked = (totalCheckboxes.length === checkedCheckboxes.length);
$(allCheckBoxSelector).attr('checked', allCheckboxesAreChecked);
}
$(document).ready(function () {
$(allCheckBoxSelector).live('click', function () {
$(checkBoxSelector).attr('checked', $(this).is(':checked'));
ToggleCheckUncheckAllOptionAsNeeded();
});
$(checkBoxSelector).live('click', ToggleCheckUncheckAllOptionAsNeeded);
ToggleCheckUncheckAllOptionAsNeeded();
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelected" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<string> lstObjects = new List<string> { "aaa", "bbb" };
GridView1.DataSource = lstObjects;
GridView1.DataBind();
}
}
如果您使用的是最新版本的jQuery(1.7)
使用以下内容:
<script type="text/javascript">
var allCheckBoxSelector = '#<%=GridView1.ClientID%> input[id*="chkAll"]:checkbox';
var checkBoxSelector = '#<%=GridView1.ClientID%> input[id*="chkSelected"]:checkbox';
function ToggleCheckUncheckAllOptionAsNeeded() {
var totalCheckboxes = $(checkBoxSelector),
checkedCheckboxes = totalCheckboxes.filter(":checked"),
noCheckboxesAreChecked = (checkedCheckboxes.length === 0),
allCheckboxesAreChecked = (totalCheckboxes.length === checkedCheckboxes.length);
$(allCheckBoxSelector).attr('checked', allCheckboxesAreChecked);
}
$(document).ready(function () {
$(allCheckBoxSelector).click(function () {
$(checkBoxSelector).attr('checked', $(this).is(':checked'));
ToggleCheckUncheckAllOptionAsNeeded();
});
$(checkBoxSelector).click(ToggleCheckUncheckAllOptionAsNeeded);
ToggleCheckUncheckAllOptionAsNeeded();
});
</script>