or
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 } }