user575219
user575219

Reputation: 2440

Asp.net Dev express grid select all rows

I have the following using dev express asp.net grid enter image description here

This is the code

  <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>

This works great!!. But I also need a 'Select All' checkbox at the grouped row level(not in the header).Check box to be able to select all the rows based on the Corporate name.

See screenshot below enter image description here

Upvotes: 1

Views: 3742

Answers (1)

Vikram Singh Saini
Vikram Singh Saini

Reputation: 1889

If I'm not wrong, you are looking for example at link -

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

Code excerpt from article :

@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()

Upvotes: 1

Related Questions