Hello,
I am getting issue to customize group header, I have some operation(sum,count,min,max, last, first, average) in footer.
But I want to do same operation in group header. Example: I have last product in footer now I want to show total product count in header.
How can I do this?
[I can have max 3 column for grouping]
Could you please help me anyone?
Please see attached image.
I am getting issue to customize group header, I have some operation(sum,count,min,max, last, first, average) in footer.
But I want to do same operation in group header. Example: I have last product in footer now I want to show total product count in header.
How can I do this?
[I can have max 3 column for grouping]
Could you please help me anyone?
Please see attached image.
5 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 25 Aug 2014, 10:57 AM
Hi Aminul,
I guess you are using GroupHeaderTemplate. In order to achieve you requirement you can add a Label and get the sum and count, use a unique column to get count. Please try the following code snippet:
ASPX:
Thanks,
Princy
I guess you are using GroupHeaderTemplate. In order to achieve you requirement you can add a Label and get the sum and count, use a unique column to get count. Please try the following code snippet:
ASPX:
Unit Price:
<
asp:Label
ID
=
"lblUnitPrice"
runat
=
"server"
Text='<%# "Sum:"+Eval("UnitPrice")+ "Count: "+((GridGroupHeaderItem)Container).AggregatesValues["AvailableUnits"] %>' />
Thanks,
Princy
0
Aminul
Top achievements
Rank 1
answered on 25 Aug 2014, 12:42 PM
Hello Princy,
Thanks for your code snippet. its working but I have to do this in code behind(C#), because our group fields and operation fields will come dynamically (as per our settings)
So could you please give me the c# code snippet.
Thanks
Aminul
Thanks for your code snippet. its working but I have to do this in code behind(C#), because our group fields and operation fields will come dynamically (as per our settings)
So could you please give me the c# code snippet.
Thanks
Aminul
0
Aminul
Top achievements
Rank 1
answered on 25 Aug 2014, 02:16 PM
Your code not working, Showing invalid result. please see in attachment.
My code was:
<telerik:RadGrid ID="RadGrid1" ShowGroupPanel="true" AutoGenerateColumns="false"
DataSourceID="SqlDataSource1" ShowFooter="false" runat="server" GridLines="None"
AllowPaging="true" PageSize="20" Skin="Office2007" OnPreRender="RadGrid1_PreRender"
GroupingSettings-RetainGroupFootersVisibility="true">
<MasterTableView ShowGroupFooter="true">
<GroupHeaderTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# "Total Unit Price:"+Eval("UnitPrice")+ ", Count: "+((GridGroupHeaderItem)Container).AggregatesValues["AvailableUnits"] %>'></asp:Label>
</GroupHeaderTemplate>
<GroupFooterTemplate>
Product count: <asp:Label ID="Label6" runat="server" Text='<%#Eval("ProductName") %>'></asp:Label>
</td>
<td>
Total Units:<asp:Label ID="Label7" runat="server" Text='<%# Eval("UnitsInStock") %>'></asp:Label>
</td>
<td>
Total Unit Price:<asp:Label ID="Label8" runat="server" Text='<%# Eval("UnitPrice") %>'></asp:Label>
</td>
<td>
Total Price:<asp:Label ID="Label9" runat="server" Text='<%# Eval("TotalPriceResult") %>'></asp:Label>
</GroupFooterTemplate>
<Columns>
<telerik:GridBoundColumn Aggregate="Count" DataField="ProductName" HeaderText="Product name" SortExpression="ProductName" UniqueName="ProductName"></telerik:GridBoundColumn>
<telerik:GridBoundColumn Aggregate="Sum" DataField="UnitsInStock" HeaderText="Units In Stock" SortExpression="UnitsInStock" UniqueName="UnitsInStock"></telerik:GridBoundColumn>
<telerik:GridBoundColumn Aggregate="Sum" DataField="UnitPrice" HeaderText="Unit price" FooterText="Total price: "></telerik:GridBoundColumn>
<telerik:GridCalculatedColumn HeaderText="Total Price" UniqueName="TotalPrice" DataType="System.Double" DataFields="UnitPrice, UnitsInStock" Expression="{0}*{1}" FooterText="Total : " Aggregate="Sum" />
</Columns>
<GroupByExpressions>
<telerik:GridGroupByExpression>
<GroupByFields>
<telerik:GridGroupByField FieldName="UnitsInStock" />
</GroupByFields>
<SelectFields>
<telerik:GridGroupByField FieldName="UnitsInStock" Aggregate="Sum" FieldAlias="AvailableUnits"
HeaderText="UnitsInStock" />
</SelectFields>
</telerik:GridGroupByExpression>
</GroupByExpressions>
</MasterTableView>
<ClientSettings AllowDragToGroup="true" />
<GroupingSettings ShowUnGroupButton="true" />
</telerik:RadGrid>
My code was:
<telerik:RadGrid ID="RadGrid1" ShowGroupPanel="true" AutoGenerateColumns="false"
DataSourceID="SqlDataSource1" ShowFooter="false" runat="server" GridLines="None"
AllowPaging="true" PageSize="20" Skin="Office2007" OnPreRender="RadGrid1_PreRender"
GroupingSettings-RetainGroupFootersVisibility="true">
<MasterTableView ShowGroupFooter="true">
<GroupHeaderTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# "Total Unit Price:"+Eval("UnitPrice")+ ", Count: "+((GridGroupHeaderItem)Container).AggregatesValues["AvailableUnits"] %>'></asp:Label>
</GroupHeaderTemplate>
<GroupFooterTemplate>
Product count: <asp:Label ID="Label6" runat="server" Text='<%#Eval("ProductName") %>'></asp:Label>
</td>
<td>
Total Units:<asp:Label ID="Label7" runat="server" Text='<%# Eval("UnitsInStock") %>'></asp:Label>
</td>
<td>
Total Unit Price:<asp:Label ID="Label8" runat="server" Text='<%# Eval("UnitPrice") %>'></asp:Label>
</td>
<td>
Total Price:<asp:Label ID="Label9" runat="server" Text='<%# Eval("TotalPriceResult") %>'></asp:Label>
</GroupFooterTemplate>
<Columns>
<telerik:GridBoundColumn Aggregate="Count" DataField="ProductName" HeaderText="Product name" SortExpression="ProductName" UniqueName="ProductName"></telerik:GridBoundColumn>
<telerik:GridBoundColumn Aggregate="Sum" DataField="UnitsInStock" HeaderText="Units In Stock" SortExpression="UnitsInStock" UniqueName="UnitsInStock"></telerik:GridBoundColumn>
<telerik:GridBoundColumn Aggregate="Sum" DataField="UnitPrice" HeaderText="Unit price" FooterText="Total price: "></telerik:GridBoundColumn>
<telerik:GridCalculatedColumn HeaderText="Total Price" UniqueName="TotalPrice" DataType="System.Double" DataFields="UnitPrice, UnitsInStock" Expression="{0}*{1}" FooterText="Total : " Aggregate="Sum" />
</Columns>
<GroupByExpressions>
<telerik:GridGroupByExpression>
<GroupByFields>
<telerik:GridGroupByField FieldName="UnitsInStock" />
</GroupByFields>
<SelectFields>
<telerik:GridGroupByField FieldName="UnitsInStock" Aggregate="Sum" FieldAlias="AvailableUnits"
HeaderText="UnitsInStock" />
</SelectFields>
</telerik:GridGroupByExpression>
</GroupByExpressions>
</MasterTableView>
<ClientSettings AllowDragToGroup="true" />
<GroupingSettings ShowUnGroupButton="true" />
</telerik:RadGrid>
0
Princy
Top achievements
Rank 2
answered on 26 Aug 2014, 10:40 AM
Hi Aminul,
Please take a look at the following sample code snippet. I have provided solution for both aspx and c# code.
ASPX:
C#:
Thanks,
Princy
Please take a look at the following sample code snippet. I have provided solution for both aspx and c# code.
ASPX:
<
telerik:RadAjaxManager
ID
=
"RadAjaxManagerGrid"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"rgrdSample"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"rgrdSample"
></
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadGrid
ID
=
"rgrdSample"
ShowGroupPanel
=
"true"
AutoGenerateColumns
=
"false"
DataSourceID
=
"dsGrid"
ShowFooter
=
"True"
runat
=
"server"
GridLines
=
"None"
AllowPaging
=
"true"
PageSize
=
"7"
GroupingSettings-RetainGroupFootersVisibility
=
"true"
OnItemDataBound
=
"rgrdSample_ItemDataBound"
>
<
MasterTableView
ShowGroupFooter
=
"true"
>
<
GroupHeaderTemplate
>
<%-- .... From ASPX.... --%>
<%-- <
asp:Label
runat
=
"server"
ID
=
"lblUnitPrices"
Text='<%# "Sum:"+Eval("Price") + "Count: "+((GridGroupHeaderItem)Container).AggregatesValues["AvailableUnits"] %>'></
asp:Label
>--%>
<%-- ....From Code Behind.... --%>
<
asp:Label
ID
=
"lblUnitPrice"
runat
=
"server"
Text
=
"Label"
></
asp:Label
>
</
GroupHeaderTemplate
>
<
GroupFooterTemplate
>
Total sum:
<
asp:Label
ID
=
"lblFooterUnitPrice"
runat
=
"server"
Text='<%# Eval("UnitPrice") %>'>
</
asp:Label
>
</
GroupFooterTemplate
>
<
Columns
>
<
telerik:GridBoundColumn
Aggregate
=
"Count"
DataField
=
"ProductName"
HeaderText
=
"Product name"
SortExpression
=
"ProductName"
UniqueName
=
"ProductName"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
Aggregate
=
"Count"
DataField
=
"UnitsInStock"
HeaderText
=
"Units In Stock"
SortExpression
=
"UnitsInStock"
UniqueName
=
"UnitsInStock"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
Aggregate
=
"Sum"
DataField
=
"UnitPrice"
HeaderText
=
"Unit price"
FooterText
=
"Total price: "
>
</
telerik:GridBoundColumn
>
<
telerik:GridCalculatedColumn
HeaderText
=
"Total Price"
UniqueName
=
"TotalPrice"
DataType
=
"System.Double"
DataFields
=
"UnitPrice, UnitsInStock"
Expression
=
"{0}*{1}"
FooterText
=
"Total : "
Aggregate
=
"Sum"
>
</
telerik:GridCalculatedColumn
>
</
Columns
>
<
GroupByExpressions
>
<
telerik:GridGroupByExpression
>
<
SelectFields
>
<
telerik:GridGroupByField
FieldName
=
"UnitPrice"
FieldAlias
=
"Price"
HeaderText
=
"Price"
Aggregate
=
"Sum"
/>
<
telerik:GridGroupByField
FieldName
=
"UnitsInStock"
FieldAlias
=
"AvailableUnits"
HeaderText
=
"Count"
Aggregate
=
"Count"
/>
</
SelectFields
>
<
GroupByFields
>
<
telerik:GridGroupByField
FieldName
=
"UnitPrice"
SortOrder
=
"Descending"
/>
</
GroupByFields
>
</
telerik:GridGroupByExpression
>
</
GroupByExpressions
>
</
MasterTableView
>
<
ClientSettings
AllowDragToGroup
=
"true"
>
<
ClientEvents
/>
</
ClientSettings
>
<
GroupingSettings
ShowUnGroupButton
=
"true"
></
GroupingSettings
>
</
telerik:RadGrid
>
<
asp:SqlDataSource
ID
=
"dsGrid"
ConnectionString="<%$ ConnectionStrings:Northwind_newConnectionString3 %>"
SelectCommand="SELECT * FROM Products" runat="server"></
asp:SqlDataSource
>
C#:
protected
void
rgrdSample_ItemDataBound(
object
sender, GridItemEventArgs e)
{
double
total = 0;
if
(e.Item
is
GridGroupHeaderItem)
{
DataRowView dataItem = (DataRowView)e.Item.DataItem;
GridGroupHeaderItem headerItem = (GridGroupHeaderItem)e.Item;
Label lblUnitPrice = (Label)headerItem.FindControl(
"lblUnitPrice"
);
total = Convert.ToDouble(dataItem[
"Price"
]);
int
count = Convert.ToInt16(headerItem.AggregatesValues[
"AvailableUnits"
]);
lblUnitPrice.Text =
"Unit Price(Sum:"
+ total +
", Count:"
+ count +
")"
;
}
}
Thanks,
Princy
0
Youssef
Top achievements
Rank 1
answered on 02 Mar 2015, 11:49 PM
Hi Princy
In the same example . How do I align those columns with the corresponding column in the grid.
In my case it is a grid with multiple groups.
Can you help me with this ?
In the same example . How do I align those columns with the corresponding column in the grid.
In my case it is a grid with multiple groups.
Can you help me with this ?