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