or
<asp:Content ID="GridContent" ContentPlaceHolderID="GridContent" Runat="Server"> <table border="0" cellpadding="0" cellspacing="0" width="520"> <tr> <td> <div> <telerik:RadGrid ID="RadGridProgram" runat="server" AutoGenerateColumns="false" AllowSorting="True" AllowPaging="true" Skin="Simple" ClientSettings-Resizing-AllowColumnResize="true" ItemStyle-Wrap="false" Width="500" HeaderStyle-Wrap="false" PageSize="10" OnNeedDataSource="RadGridProgram_NeedDataSource" OnItemCommand="RadGridProgram_ItemCommand"> <PagerStyle Mode="NumericPages" /> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true" /> </ClientSettings> <MasterTableView TableLayout="Fixed" AllowMultiColumnSorting="true" DataKeyNames="ProgramID" ShowFooter="false" PagerStyle-AlwaysVisible="false" > <NoRecordsTemplate> <asp:Label ID="lblMsg" runat="server" Text="No Records found"></asp:Label> </NoRecordsTemplate> <Columns> <telerik:GridButtonColumn ButtonType="LinkButton" HeaderText="Edit" CommandName="EditProgram" UniqueName="Edit" Text="Edit" HeaderStyle-Width="40" /> <telerik:GridBoundColumn HeaderText="Program ID" HeaderButtonType="TextButton" DataField="ProgramID" HeaderStyle-Width="80" /> <telerik:GridBoundColumn HeaderText="Prog. Collection. ID" HeaderButtonType="TextButton" DataField="ProgramId" Display="false" /> <telerik:GridBoundColumn HeaderText="Program Collection" HeaderButtonType="TextButton" DataField="ProgramCollection.ProgramName" HeaderStyle-Width="200" /> <telerik:GridBoundColumn HeaderText="Client ID" HeaderButtonType="TextButton" DataField="ClientId" Display="false" /> <telerik:GridBoundColumn HeaderText="Client" HeaderButtonType="TextButton" DataField="Client.ClientName" HeaderStyle-Width="150" /> <telerik:GridBoundColumn HeaderText="Program Name" HeaderButtonType="TextButton" DataField="ProgramName" HeaderStyle-Width="200" /> <telerik:GridBoundColumn HeaderText="Program Code" HeaderButtonType="TextButton" DataField="ProgramCode" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Description" HeaderButtonType="TextButton" DataField="ProgramDescription" HeaderStyle-Width="300" /> <telerik:GridBoundColumn HeaderText="Program Type Id" HeaderButtonType="TextButton" DataField="ProgramTypeId" HeaderStyle-Width="200" Display="false" /> <telerik:GridBoundColumn HeaderText="Program Type" HeaderButtonType="TextButton" DataField="ProgramType.ProgramTypeCode" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Domain Exp. Date" HeaderButtonType="TextButton" DataField="DomainExpDateText" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="SSL Exp. Date" HeaderButtonType="TextButton" DataField="SSLExpDateText" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Domain Name" HeaderButtonType="TextButton" DataField="DomainName" HeaderStyle-Width="250" /> <telerik:GridBoundColumn HeaderText="IPAddress" HeaderButtonType="TextButton" DataField="IPAddress" HeaderStyle-Width="250" /> <telerik:GridBoundColumn HeaderText="PM Name" HeaderButtonType="TextButton" DataField="PMName" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Developer Name" HeaderButtonType="TextButton" DataField="DeveloperName" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Job Number" HeaderButtonType="TextButton" DataField="JobNumber" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Adverse Events" HeaderButtonType="TextButton" DataField="HasAdverseEvents" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Pharmacy Lookup" HeaderButtonType="TextButton" DataField="HasPharmacyLookup" HeaderStyle-Width="100" /> <telerik:GridBoundColumn HeaderText="Fax" HeaderButtonType="TextButton" DataField="Fax" HeaderStyle-Width="100" /> </Columns> </MasterTableView> </telerik:RadGrid> </div> </td> </tr> </table> </asp:Content>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 } }