Asp.net DevExpress旧版ASPxGridView:如何使列标题复选框全部选中或全部清除;是否还有单独的行复选框影响标题复选框?
请原谅这个看似重复的问题,但经过两个小时的研究和几个代码示例,我还没有看到一个真正适合我的 我有一个我正在为之工作的客户机,它有一个典型的UI需求,需要一个网格,第一列是复选框。。。带有复选框标题,单击该标题可以选中(或全部清除)每个数据行中的其他复选框。如果选中单个行的复选框,则他们希望该状态反映在标题复选框中;i、 e.只有在选中所有其他可见行时,才会选中标题复选框。我还希望能够(当然)根据服务器端的选中行执行一些操作 我只能使用他们目前许可的12.2.5版本的DevExpress控件,当然,我使用的是ASPxGridView,因为这是一个web应用程序。正如我已经说过的,在看了几个代码示例之后,我似乎无法使其正常工作。我已经粘贴了我正在处理的代码的简化版本,希望能在这里得到一些指导。(注意:请不要建议“升级到最新版本”,我在这里没有这个选项!)非常感谢您的帮助 巴里·L·坎普 代码如下: ASPX页面Asp.net DevExpress旧版ASPxGridView:如何使列标题复选框全部选中或全部清除;是否还有单独的行复选框影响标题复选框?,asp.net,vb.net,checkbox,devexpress,aspxgridview,Asp.net,Vb.net,Checkbox,Devexpress,Aspxgridview,请原谅这个看似重复的问题,但经过两个小时的研究和几个代码示例,我还没有看到一个真正适合我的 我有一个我正在为之工作的客户机,它有一个典型的UI需求,需要一个网格,第一列是复选框。。。带有复选框标题,单击该标题可以选中(或全部清除)每个数据行中的其他复选框。如果选中单个行的复选框,则他们希望该状态反映在标题复选框中;i、 e.只有在选中所有其他可见行时,才会选中标题复选框。我还希望能够(当然)根据服务器端的选中行执行一些操作 我只能使用他们目前许可的12.2.5版本的DevExpress控件,当然
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="TestPage.aspx.vb" Inherits="TestApp.TestPage" %>
<%@ Register assembly="DevExpress.Web.v12.2, Version=12.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxGridView" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.v12.2, Version=12.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>
<!doctype html />
<html>
<head>
<script type="text/javascript">
function checkAllCheckBox_OnCheckedChanged(sender, e) {
var checked = sender.GetChecked();
// Loop to set all checkboxes to column header checkbox state...?
}
</script>
</head>
<body>
<dx:ASPxGridView ID="SomeInformationGridView" runat="server" KeyFieldName="ID" ClientInstanceName="grid" AutoGenerateColumns="False" SettingsPager-Mode="ShowPager" SettingsPager-PageSize="50" style="width: 95%;">
<SettingsBehavior AllowGroup="false" AllowDragDrop="false" />
<Columns>
<dx:GridViewCommandColumn ShowSelectCheckbox="true" VisibleIndex="0" Width="32px" CellStyle-HorizontalAlign="Center">
<HeaderTemplate>
<dx:ASPxCheckBox ID="CheckAllCheckBox" runat="server" AutoPostBack="false" clientinstancename="checkAllCheckBox" OnInit="CheckAllCheckBox_Init">
<ClientSideEvents CheckedChanged="checkAllCheckBox_OnCheckedChanged" />
</dx:ASPxCheckBox>
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn FieldName="ID" VisibleIndex="1" Visible="false" ReadOnly="true" CellStyle-HorizontalAlign="Center">
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="SomeOtherData" VisibleIndex="2" Visible="true" ReadOnly="true" CellStyle-HorizontalAlign="Center">
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
<--! Other Columns Here -->
</Columns>
</dx:ASPxGridView>
</body>
</html>
尝试在gridheader模板中添加以下js和html调用:
//javascript function
function CheckAll(chkBx, gvID)
{
var gv = document.getElementById(gvID);
for (i = 1; i < gv.rows.length; i++) {
if (gv.rows[i].style.display != 'none') {
gv.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = chkBx.checked;
}
};
};
//add this to your grid header template
<HeaderTemplate>
<asp:CheckBox ID="chkAllAvail" ToolTip="Select all" runat="server" onclick="CheckAll(this, 'SomeInformationGridView');" Visible="true" />
</HeaderTemplate>
//javascript函数
功能检查全部(chkBx,gvID)
{
var gv=document.getElementById(gvID);
对于(i=1;i
我只能使用他们当前许可的DevExpress控件版本12.2.5
是的,如果您使用的是这样一个较旧的版本,则有必要使用一组代码来模拟此功能
查看说明以了解如何完成此操作。非常感谢。。。当我早上回去工作的时候,我会看一看。对不起,这对我来说并不完全有效。我需要利用DevExpress控件,并且仍然需要利用每个控件服务器端所有行的复选框值。不过,我很感谢你的回答,你应该知道不是我否决了你的回答。感谢你的回答,但这是我在发帖之前读到的文章之一。它对我不起作用;此外,我只需要一个复选框,而不是两个复选框,这很复杂。然后,实现所需的复选框(对于单个页面或所有页面)。最后有一个链接指向一个正在运行的示例。最终,我实现了这一点,但我不得不修改解决方案,使其只考虑“cbPage”变量。客户只想要这种行为,并且理解必须一次选择一页,选择所有行的含义。在标题中有两个复选框被认为是令人困惑的,我倾向于同意。但是,我现在已经实现了这一点,并将其标记为解决方案。谢谢你的帮助。
//javascript function
function CheckAll(chkBx, gvID)
{
var gv = document.getElementById(gvID);
for (i = 1; i < gv.rows.length; i++) {
if (gv.rows[i].style.display != 'none') {
gv.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = chkBx.checked;
}
};
};
//add this to your grid header template
<HeaderTemplate>
<asp:CheckBox ID="chkAllAvail" ToolTip="Select all" runat="server" onclick="CheckAll(this, 'SomeInformationGridView');" Visible="true" />
</HeaderTemplate>