This is a migrated thread and some comments may be shown as answers.

Radgrid Footer summary based on UNIT

3 Answers 26 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Purojit
Top achievements
Rank 1
Purojit asked on 16 Jul 2013, 06:39 AM
Hi,


We are designing a reporting window using  Rad-grid for our client which is a departmental store. Now the requirement is that in footer section of Rad-grid, it is required  to show UNIT(PCS,Litres, mitres,,,,,,) wise summary. In the attached snap we have tried to show our exact requirement.

Please help us with suitable code..

Regards
Purojit  .

3 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 1
answered on 16 Jul 2013, 07:18 AM
Hi Purojit,

I guess you want to change the footer text.Please check the below code snippet,i have tried to change the text,"Sum" and "CountDistinct" to another.Please elaborate your requirements if this didn't help.

ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server" onitemdatabound="RadGrid1_ItemDataBound">
    <MasterTableView ShowFooter="true">
        <Columns>
            <telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID" />
            <telerik:GridBoundColumn DataField="Freight" HeaderText="Frieght" Aggregate="Sum" UniqueName="Frieght" />
            <telerik:GridBoundColumn DataField="CustomerID" HeaderText="CustomerID" Aggregate="CountDistinct" UniqueName="CustomerID"/>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

C#:
protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{     
    if (e.Item is GridFooterItem)
    {
        var item = e.Item as GridFooterItem;
        TableCell cell = item["Frieght"];
        cell.Text = cell.Text.Replace("Sum", "Total Frieght");
        TableCell cell1 = item["CustomerID"];
        cell1.Text = cell1.Text.Replace("CountDistinct", "Distinct ID");
    
}

Thanks,
Shinu
0
Purojit
Top achievements
Rank 1
answered on 16 Jul 2013, 07:36 AM
Hi Shinu,


We want  the footer to be displayed as per unit..There will be rows on footer where summary will be shown based on unit. Please check our snap again. You will understand.

Header Part:------SALES           UNIT           AMOUNT

Detail part:-------------------------------------------------------------

Footer Part:------1000               pcs            560000
                           2500              litres          458990
                           1587              kgs            78950


Thanks

Purojit

0
Antonio Stoilkov
Telerik team
answered on 18 Jul 2013, 11:04 AM
Hello Purojit,

I have assembled a sample page showing the desired functionality implemented. The idea is to subscribe to RadGrid ItemDataBound event and manually calculate the desired values and then set the footer cells their Text property as shown below.
Dictionary<string, Dictionary<string, double>> aggregates = new Dictionary<string, Dictionary<string, double>>();
protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    GridDataItem dataItem = e.Item as GridDataItem;
    if (dataItem != null)
    {
        string value = dataItem["Unit"].Text;
        Dictionary<string, double> columnValues;
        if (!aggregates.ContainsKey(value))
        {
            columnValues = new Dictionary<string, double>();
            columnValues.Add("Sales", 0);
            columnValues.Add("Amount", 0);
            aggregates.Add(value, columnValues);
        }
        else
        {
            columnValues = aggregates[value];
        }
        columnValues["Sales"] += int.Parse(dataItem["Sales"].Text);
        columnValues["Amount"] += int.Parse(dataItem["Amount"].Text);
    }
 
    GridFooterItem footerItem = e.Item as GridFooterItem;
    if (footerItem != null)
    {
        StringBuilder value = new StringBuilder();
        foreach (var pair in aggregates)
        {
            value.Append(pair.Value["Sales"]);
            value.Append("<br />");
        }
        footerItem["Sales"].Text = value.ToString();
 
        value.Clear();
        foreach (var pair in aggregates)
        {
            value.Append(pair.Value["Amount"]);
            value.Append("<br />");
        }
        footerItem["Amount"].Text = value.ToString();
 
        value.Clear();
        foreach (var pair in aggregates)
        {
            value.Append(pair.Key);
            value.Append("<br />");
        }
        footerItem["Unit"].Text = value.ToString();
    }
}

Regards,
Antonio Stoilkov
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
Tags
Grid
Asked by
Purojit
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 1
Purojit
Top achievements
Rank 1
Antonio Stoilkov
Telerik team
Share this question
or