Hi.
I have the following scenario:
I'm presenting grouped data in a RadGrid and on the group headers I would like to include an edit button for editing the group concept. The group concept in this case is units.
The sub data under units should also have an edit button, but this i can achieve.
I currently have two problems:
Whenever I try to add a control according to any of the examples i find in the forums, the control appears underneath/behind the minimize icon. I can't figure out how to put the control at the rightmost position in the header row.
My second problem is that i don't really understand how I'm suppose to pass the required value of my concept id (unitId) to the GroupHeaderItem in the ItemCreated event.
I have tried to subtract the code from my project and attached it below.
Best regards
Richard Furberg
I have the following scenario:
I'm presenting grouped data in a RadGrid and on the group headers I would like to include an edit button for editing the group concept. The group concept in this case is units.
The sub data under units should also have an edit button, but this i can achieve.
I currently have two problems:
Whenever I try to add a control according to any of the examples i find in the forums, the control appears underneath/behind the minimize icon. I can't figure out how to put the control at the rightmost position in the header row.
My second problem is that i don't really understand how I'm suppose to pass the required value of my concept id (unitId) to the GroupHeaderItem in the ItemCreated event.
I have tried to subtract the code from my project and attached it below.
Best regards
Richard Furberg
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
using
System.Data;
public
partial
class
test : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
public
class
ExtendedRadGrid : RadGrid
{
public
Int32 Year {
get
;
set
; }
}
protected
void
Page_Init(Object sender, EventArgs e)
{
RadScriptManager radScriptManager =
new
RadScriptManager();
this
.form1.Controls.Add(radScriptManager);
RadAjaxLoadingPanel radAjaxLoadingPanel =
new
RadAjaxLoadingPanel() { ID =
"radAjaxLoadingPanel"
, Skin =
"Default"
};
RadAjaxPanel radAjaxPanel =
new
RadAjaxPanel() { LoadingPanelID =
"radAjaxLoadingPanel"
};
RadTabStrip radTabStrip =
new
RadTabStrip() { Skin =
"Default"
, AutoPostBack =
true
, MultiPageID =
"radMultiPage"
, SelectedIndex = 0 };
RadMultiPage radMultiPage =
new
RadMultiPage() { RenderSelectedPageOnly =
true
, ID =
"radMultiPage"
, SelectedIndex = 0 };
int
[] years =
new
int
[] { 2010, 2011 };
foreach
(
int
year
in
years)
{
radTabStrip.Tabs.Add(
new
RadTab(year.ToString(),
"RadTabID"
+ year.ToString()) { PageViewID =
"PageViewID"
+ year.ToString() });
ExtendedRadGrid radGrid =
new
ExtendedRadGrid();
radGrid.PageSize = 20;
radGrid.Skin =
"Windows7"
;
radGrid.Width = Unit.Percentage(100);
radGrid.PagerStyle.Mode = GridPagerMode.Slider;
radGrid.MasterTableView.TableLayout = GridTableLayout.Fixed;
radGrid.Year = year;
radGrid.NeedDataSource +=
new
GridNeedDataSourceEventHandler(radGrid_NeedDataSource);
radGrid.FilterMenu.ExpandAnimation.Type = AnimationType.None;
radGrid.FilterMenu.CollapseAnimation.Type = AnimationType.None;
radGrid.AllowSorting =
true
;
radGrid.AllowPaging =
true
;
radGrid.ShowStatusBar =
true
;
radGrid.ShowFooter =
true
;
radGrid.AllowFilteringByColumn =
true
;
radGrid.FilterMenu.EnableShadows =
true
;
radGrid.FilterMenu.EnableRoundedCorners =
true
;
radGrid.ClientSettings.AllowDragToGroup =
false
;
radGrid.AutoGenerateColumns =
false
;
radGrid.ShowGroupPanel =
false
;
radGrid.GroupingEnabled =
true
;
radGrid.GroupingSettings.GroupByFieldsSeparator =
" - "
;
radGrid.GroupHeaderItemStyle.CssClass =
"HeaderItem"
;
radGrid.ItemCreated += RadGrid1_ItemCreated;
radGrid.MasterTableView.DataKeyNames =
new
string
[] {
"RoleCompensationID"
,
"UnitCompensationID"
};
//----------------------------------------------------------------------------------
//Bound columns
GridBoundColumn gridBoundColumn;
gridBoundColumn =
new
GridBoundColumn();
gridBoundColumn.DataField =
"Title"
;
gridBoundColumn.HeaderText =
"Title"
;
gridBoundColumn.FooterText =
"Title"
;
radGrid.MasterTableView.Columns.Add(gridBoundColumn);
GridTemplateColumn gridTemplateColumn =
new
GridTemplateColumn();
radGrid.MasterTableView.Columns.Add(gridTemplateColumn);
//----------------------------------------------------------------------------------
//GroupByExpressions
GridGroupByExpression expression =
new
GridGroupByExpression();
GridGroupByField gridGroupByField;
//SelectFields
gridGroupByField =
new
GridGroupByField();
gridGroupByField.FieldName =
"UnitName"
;
gridGroupByField.HeaderText =
" "
;
gridGroupByField.HeaderValueSeparator =
" "
;
expression.SelectFields.Add(gridGroupByField);
gridGroupByField =
new
GridGroupByField();
gridGroupByField.FieldName =
"UnitCompensationID"
;
gridGroupByField.HeaderText =
" "
;
gridGroupByField.HeaderValueSeparator =
" "
;
gridGroupByField.FormatString =
" "
;
expression.SelectFields.Add(gridGroupByField);
//GroupByField
gridGroupByField =
new
GridGroupByField();
gridGroupByField.FieldName =
"UnitName"
;
gridGroupByField.HeaderText =
" "
;
gridGroupByField.HeaderValueSeparator =
" "
;
expression.GroupByFields.Add(gridGroupByField);
radGrid.MasterTableView.GroupByExpressions.Add(expression);
//----------------------------------------------------------------------------------
RadPageView radPageView =
new
RadPageView() { ID =
"PageViewID"
+ year };
radPageView.Controls.Add(radGrid);
radMultiPage.PageViews.Add(radPageView);
}
radAjaxPanel.Controls.Add(
new
LiteralControl(
"<div style='margin-bottom:-1px;'>"
));
radAjaxPanel.Controls.Add(radTabStrip);
radAjaxPanel.Controls.Add(
new
LiteralControl(
"</div>"
));
radAjaxPanel.Controls.Add(radMultiPage);
this
.form1.Controls.Add(radAjaxLoadingPanel);
this
.form1.Controls.Add(radAjaxPanel);
}
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem dataItem = e.Item
as
GridDataItem;
dataItem.Attributes.Add(
"onClick"
,
"alert('"
+ dataItem.GetDataKeyValue(
"RoleCompensationID"
) +
"')"
);
// No problem getting the required id value.
}
else
if
(e.Item
is
GridGroupHeaderItem)
{
GridGroupHeaderItem gridGroupHeaderItem = e.Item
as
GridGroupHeaderItem;
DataRowView groupDataRow = (DataRowView)gridGroupHeaderItem.DataItem;
Button objButton =
new
Button();
objButton.CommandName =
"Add"
;
objButton.ID =
"Button_Add"
;
objButton.Text = groupDataRow[
"UnitCompensationID"
].ToString();
// Here i created an extra gridGroupByField in selectFields with an empty FormatString for passing ID value. I'm sure there must be a better way...
((GridTableCell)gridGroupHeaderItem.Controls[0]).Controls.Add(objButton);
}
}
void
radGrid_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
//Here I'm retrieving and setting a DataTable as DataSource
}
}