|
Requirements |
|
| RadControls version | 2011.1.519.40 |
| .NET version | 4.0 |
| Visual Studio version | 2010 |
| programming language | C# |
| browser support |
all browsers supported by RadControls |
PROJECT DESCRIPTION
Here I have one radgrid in which I have two boundcolumns and others are I have added dynamically at runtime "GridTemplateColumn" from code behind. In which I have added one check box control in ItemTemplate. Here also I have one save button outside of the radgrid. Now when I am clicking on that save button I can getting that checkbox added dynamically in columns on click of save button.
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="RadButton1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> <telerik:AjaxUpdatedControl ControlID="lblColumn1" /> <telerik:AjaxUpdatedControl ControlID="lblColumn2" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"> </telerik:RadAjaxLoadingPanel> </div> <div> <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" OnItemDataBound="RadGrid1_ItemDataBound" OnPreRender="RadGrid1_PreRender"> <MasterTableView DataKeyNames="ID"> <Columns> <telerik:GridBoundColumn DataField="ID" HeaderText="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Name" HeaderText="Name"> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> <br /> <telerik:RadButton ID="RadButton1" Text="Click for selected item" runat="server" OnClick="RadButton1_Click"> </telerik:RadButton> <br /> <asp:Label ID="lblColumn1" runat="server"></asp:Label> </div> </form></body></html>Default.aspx.cs
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;using System.Text;public partial class Default2 : System.Web.UI.Page{ protected void Page_Init(object sender, EventArgs e) { // you can dynamically add multiple column by for each loop foreach (DataRow dr in Class1.GetDataTable().Rows) { GridTemplateColumn objGridTemplateColumn = new GridTemplateColumn(); objGridTemplateColumn.HeaderText = dr["ColumnUniqueName"].ToString(); objGridTemplateColumn.UniqueName = dr["ColumnUniqueName"].ToString(); objGridTemplateColumn.ItemTemplate = new MyTemplate(dr["ColumnControlID"].ToString()); RadGrid1.MasterTableView.Columns.Add(objGridTemplateColumn); } } protected void Page_Load(object sender, EventArgs e) { } protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { dynamic data = new[] { new { ID = 1, Name ="Name1",Isbool = true}, new { ID = 2, Name = "Name2",Isbool = false}, new { ID = 3, Name = "Name3",Isbool = true}, new { ID = 4, Name = "Name4",Isbool = false}, new { ID = 5, Name = "Name5",Isbool = true}, new { ID = 6, Name ="Name6",Isbool = true}, new { ID = 7, Name = "Name7",Isbool = false}, new { ID = 8, Name = "Name8",Isbool = true}, new { ID = 9, Name = "Name9",Isbool = true}, new { ID = 10, Name = "Name10",Isbool = false} }; RadGrid1.DataSource = data; } protected void RadButton1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); foreach (GridDataItem item in RadGrid1.Items) { foreach (DataRow dr in Class1.GetDataTable().Rows) { CheckBox objCheckBox = (CheckBox)item[dr["ColumnUniqueName"].ToString()].Controls[0]; if (objCheckBox.Checked) { sb.Append(dr["ColumnUniqueName"].ToString() + " : " + item.GetDataKeyValue("ID").ToString()); sb.Append("</br>"); } } } lblColumn1.Text = sb.ToString(); } protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = e.Item as GridDataItem; foreach (DataRow dr in Class1.GetDataTable().Rows) { if(dr["ColumnUniqueName"].ToString() == "CheckBoxColumn1") { if (Convert.ToInt32(item.GetDataKeyValue("ID")) == 1 || Convert.ToInt32(item.GetDataKeyValue("ID")) == 3) { CheckBox chkTemp = (CheckBox)item[dr["ColumnUniqueName"].ToString()].Controls[0]; chkTemp.Checked = true; } } else if (dr["ColumnUniqueName"].ToString() == "CheckBoxColumn2") { if (Convert.ToInt32(item.GetDataKeyValue("ID")) == 2 || Convert.ToInt32(item.GetDataKeyValue("ID")) == 4) { CheckBox chkTemp = (CheckBox)item[dr["ColumnUniqueName"].ToString()].Controls[0]; chkTemp.Checked = true; } } } } } protected void RadGrid1_PreRender(object sender, EventArgs e) { int count = 0; foreach (GridColumn column in RadGrid1.Columns) { count++; if (count > Class1.GetDataTable().Columns.Count + 2) { column.Visible = false; } } }}public class MyTemplate : ITemplate{ protected CheckBox boolValue; private string colname; public MyTemplate(string cName) { colname = cName; } public void InstantiateIn(System.Web.UI.Control container) { boolValue = new CheckBox(); boolValue.ID = colname; container.Controls.Add(boolValue); } void boolValue_DataBinding(object sender, EventArgs e) { CheckBox cBox = (CheckBox)sender; GridDataItem container = (GridDataItem)cBox.NamingContainer; }}Class1.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;/// <summary>/// Summary description for Class1/// </summary>public class Class1{ public Class1() { // // TODO: Add constructor logic here // } public static DataTable GetDataTable() { DataTable dt = new DataTable(); dt.Columns.Add("ColumnID",typeof(Int32)); dt.Columns.Add("ColumnUniqueName", typeof(string)); dt.Columns.Add("ColumnControlID", typeof(string)); dt.Rows.Add(1, "CheckBoxColumn1", "CheckBox1"); dt.Rows.Add(2, "CheckBoxColumn2", "CheckBox2"); return dt; }}Thanks,
Jayesh Goyani