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

How display Total for a column based on value.

4 Answers 121 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Rabih
Top achievements
Rank 1
Rabih asked on 01 Mar 2013, 08:25 AM
Hello,
I have a RadGrid with a SGridButtonColumn column that display numbers that could be equal zero or any integer bigger than zero.
I want to display in footer a total of zeros and total for non zero numbers(How many Zeros i have and how many non zeros i have).
How can i achieve such functionality ?


4 Answers, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 01 Mar 2013, 08:51 AM
Hello,

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" OnNeedDataSource="RadGrid1_NeedDataSource"
       ShowFooter="true"
      PageSize="10" OnItemDataBound="RadGrid1_ItemDataBound"
           
           >
         
           <MasterTableView >
                
               <Columns>
                   <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                   </telerik:GridBoundColumn>
                   <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
                   </telerik:GridBoundColumn>
                   <telerik:GridEditCommandColumn>
                   </telerik:GridEditCommandColumn>
               </Columns>
           </MasterTableView>
           
       </telerik:RadGrid>
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        dynamic data = new[] {
            new { ID = 0, Name ="Name1",path="1.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(1)},
            new { ID = 0, Name = "Name2",path="2.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(2)},
            new { ID = 3, Name = "Name3",path="3.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(3)},
             new { ID = 4, Name = "Name4",path="2.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(4)},
            new { ID = 5, Name = "Name5",path="3.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(5)},
             new { ID = 6, Name ="Name1",path="1.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(6)},
            new { ID = 7, Name = "Name2",path="2.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(7)},
            new { ID = 8, Name = "Name3",path="3.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(8)},
             new { ID = 9, Name = "Name4",path="2.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(9)},
            new { ID = 10, Name = "Name5",path="3.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(10)},
             new { ID = 11, Name ="Name1",path="1.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(11)},
            new { ID = 12, Name = "Name2",path="2.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(12)},
            new { ID = 13, Name = "Name3",path="3.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(13)},
             new { ID = 14, Name = "Name4",path="2.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(14)},
            new { ID = 15, Name = "Name5",path="3.jpg",Customedate=DateTime.Now,ReceivedDate=DateTime.Now.AddDays(150)}
             
        };
 
        RadGrid1.DataSource = data;
 
    }
 
 
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
       
        if (e.Item is GridFooterItem)
        {
            GridFooterItem fitem = e.Item as GridFooterItem;
 
            List<GridDataItem> Items = (from item in RadGrid1.MasterTableView.Items.Cast<GridDataItem>()
                                        where Convert.ToInt32(item["ID"].Text) > 0
                                        select item).ToList();
 
            string str = "total not zero : " + Items.Count + " ";
 
 
            Items = (from item in RadGrid1.MasterTableView.Items.Cast<GridDataItem>()
                     where Convert.ToInt32(item["ID"].Text) == 0
                     select item).ToList();
 
            str += "total zero: " + Items.Count;
 
            fitem["ID"].Text = str;
        }
 
    }


Thanks,
Jayesh Goyani
0
Accepted
Shinu
Top achievements
Rank 2
answered on 01 Mar 2013, 09:06 AM
Hi,

Please take a look into the following code snippet to show footer total for GridButtonColumn.

ASPX:
<telerik:GridButtonColumn ButtonType="PushButton" DataTextField="EmployeeID" UniqueName="ID"></telerik:GridButtonColumn>

C#:
protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem ditem = (GridDataItem)e.Item;
        Button btn = (Button)ditem["ID"].Controls[0];
        int fieldValue = Convert.ToInt32(btn.Text);
        total += fieldValue;
    }
        
    if (e.Item is GridFooterItem)
    {
        GridFooterItem fitem = e.Item as GridFooterItem;
        fitem["ID"].Text = total.ToString();         
    }
}

Thanks,
Shinu.
0
Rabih
Top achievements
Rank 1
answered on 01 Mar 2013, 10:08 AM
Hi again,
The message i am putting in footer is breaking on two lines how can i display the message in one line, regarding of column width ?
0
Shinu
Top achievements
Rank 2
answered on 02 Mar 2013, 03:59 AM
Hi,

Try setting the MasterTableView property TableLayout to Auto as shown below.

ASPX:
<MasterTableView CommandItemDisplay="Top" TableLayout="Auto">

Thanks,
Shinu.
Tags
Grid
Asked by
Rabih
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Shinu
Top achievements
Rank 2
Rabih
Top achievements
Rank 1
Share this question
or