【问题标题】:Asp.net Dev express grid select all rowsAsp.net Dev express 网格选择所有行
【发布时间】:2013-09-11 14:29:30
【问题描述】:

我有以下使用 dev express asp.net 网格

这是代码

  <div style="float: right; width: 78%">
                <dx:ASPxGridView ID="ASPxGridView1" runat="server" ClientInstanceName="ASPxGridView1"
                   AutoGenerateColumns="false" Width="100%" KeyFieldName="ID">
                    <Columns>
                          <dx:GridViewDataTextColumn  VisibleIndex="0" FieldName="CorporateName" Settings-AllowSort="False">

                        <DataItemTemplate>
                            <div style="text-align: center">
                                <dx:ASPxCheckBox ID="ListCheckBox" runat="server" CssClass="countCB">
                                    <ClientSideEvents CheckedChanged="OnSelectionChanged" />
                                </dx:ASPxCheckBox>
                            </div>
                        </DataItemTemplate>

                    </dx:GridViewDataTextColumn>


                        <dx:GridViewDataTextColumn FieldName="FacilityName" VisibleIndex="2" />
                        <dx:GridViewDataTextColumn FieldName="FacilityCode" VisibleIndex="3" />
                    </Columns>
                    <ClientSideEvents SelectionChanged="grid_SelectionChanged" />
                </dx:ASPxGridView>
            </div>

这很好用!!但我还需要分组行级别的“全选”复选框(不在标题中)。复选框能够根据公司名称选择所有行。

请看下面的截图

【问题讨论】:

    标签: asp.net devexpress


    【解决方案1】:

    如果我没记错的话,你正在寻找链接 -

    GridView - How to use the link to select and deselect all rows in a group

    文章代码摘录:

    @using DevExpress.Web.Mvc.UI;
    @using DevExpress.Web.Mvc;
    @Html.DevExpress().GridView(settings => {
    settings.Name = "dxGridView";
    settings.KeyFieldName = "ProductID";
    settings.CallbackRouteValues = new { Controller = "Home", Action = "GridViewPartial" };
    
    settings.Columns.Add("ProductID");
    settings.Columns.Add("ProductName");
    settings.Columns.Add("CategoryID").GroupIndex = 0;
    settings.Columns.Add("Discontinued", MVCxGridViewColumnType.CheckBox);
    
    settings.CommandColumn.Visible = true;
    settings.CommandColumn.ShowSelectCheckbox = true;
    
    settings.Settings.ShowGroupPanel = true;
    settings.SetGroupRowContentTemplateContent(c => {
        var linkSelect = String.Format("<a onclick='SelectGroupedRows({0}, true);' href='javascript:void(0)'>Select All / </a>", c.VisibleIndex);
        var linkUnselect = String.Format("<a onclick='SelectGroupedRows({1}, false);' href='javascript:void(0)'>Unselect All Rows: {0}</a>", c.GroupText, c.VisibleIndex);
    
        var group = String.Format("{0}{1}", linkSelect, linkUnselect);
        ViewContext.Writer.Write(group);
    });
    
    settings.CustomCallback = (s, e) => {
        ASPxGridView grid = s as ASPxGridView;
        string[] data = e.Parameters.Split('|');
    
        int index = int.Parse(data[0]);
        bool value = bool.Parse(data[1]);
        if (data.Length == 2) {
            int startLevel = grid.GetRowLevel(index);
            int count = grid.VisibleRowCount;
            for (int i = 1 + index; i < count; i++) {
                grid.Selection.SetSelection(i, value);
                if (grid.GetRowLevel(i) <= startLevel)
                    break;
            }
        }
    };
    
    }).Bind(Model).GetHtml()
    

    【讨论】:

    • CustomCallback 方法已被弃用。 devex 建议用户 CustomActionRouteValues 而不是此方法。你能用这个新方法更新你的代码吗?
    猜你喜欢
    • 2021-04-22
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2017-06-27
    • 1970-01-01
    • 2011-02-23
    相关资源
    最近更新 更多