How to get a sum aggregation for a Telerik RadGrid GridClientSelectColumn for only selected rows

asp.netasp.net-ajaxradgridteleriktelerik-grid

I'm new to the Telerik library and one of my first tasks is to get a total of the values in a numeric column of a Telerik RadGrid. The column is a GridClientSelectColumn. I understand that by setting the Aggregate="Sum", the footer will read the summation of that column. The problem is that I only want a summation of the selected rows. Can someone provide a demonstration. Thank you in advance!

Best Answer

please check below code snippet.

Note : if you want to do below thing by label inplace of datakey then please check this link.

JS Code

 <telerik:RadCodeBlock ID="RadCodeBlock" runat="server">
    <script type="text/javascript">
        function RowSelected(sender, args) {

            var grid = $find("<%=RadGrid1.ClientID %>");

            var totalAmount = 0;

            if (grid) {
                var MasterTable = grid.get_masterTableView();
                var Rows = MasterTable.get_dataItems();
                for (var i = 0; i < Rows.length; i++) {
                    var row = Rows[i];
                    if (row.get_selected() == true) {

                        totalAmount = totalAmount + parseFloat(row.getDataKeyValue("ID"));
                    }
                }
            }

            if ($("span[id$='myFooter']").length > 0) {
                $("span[id$='myFooter']").get(0).innerHTML = "sum is : " + totalAmount;
            }
        }
    </script>
</telerik:RadCodeBlock>

.aspx

  <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
        ShowFooter="true" AllowMultiRowSelection="true">
        <MasterTableView ClientDataKeyNames="ID">
            <Columns>
                <telerik:GridClientSelectColumn UniqueName="columnSelect">
                </telerik:GridClientSelectColumn>
                <telerik:GridTemplateColumn DataField="ID" HeaderText="ID" UniqueName="ID">
                    <ItemTemplate>
                        <asp:Label ID="txtID" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:Label ID="myFooter" runat="server" Text="sum is : 0"></asp:Label>
                    </FooterTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
        </MasterTableView>
        <ClientSettings>
            <Selecting AllowRowSelect="true" />
            <ClientEvents OnRowSelected="RowSelected" OnRowDeselected="RowSelected" />
        </ClientSettings>
    </telerik:RadGrid>

.aspx.cs

 protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    DateTime dt = DateTime.Now;

    dynamic data = new[] {
            new { ID = 1, Name ="Name_1", customdate=dt,NO = 11.00},
            new { ID = 2, Name = "Name2", customdate=dt,NO = 11.00},
            new { ID = 3, Name = "Name3", customdate=dt,NO = 11.00},
            new { ID = 4, Name = "Name4", customdate=dt,NO = 11.44},
            new { ID = 5, Name = "Name5", customdate=dt,NO = 10.4}
        };

    RadGrid1.DataSource = data;
}
Related Topic