Hi! First of all, thanks for reading this post and try to help me. My problem is this: I have a RadGrid which has a GridTemplateColumn. Inside that column there is an asp:CheckBox. What I want to do is to press a button to add some rows in the radgrid and display the checkbox properly. The problem I facing is that if quantity of new rows are more quantity of rows before the addition, the checkboxes of the new rows are not showing. Ive prepared a small example of the problem (to emulate it you just need to create a Web Application called: "WebApplicationRadGridCheckBox" and paste the code below in the Default.aspx file -also, you need the telerik dll´s-). Then, just press the button "Add" and watch the result (remember that Ive used gridRowBound and gridRowCreated because you can´t use Eval in the client side).
Thank you very much. Matias.
Default.aspx:
Default.aspx.cs:
Thank you very much. Matias.
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicationRadGridCheckBox._Default" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!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
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlockTipoDocumentoDetails"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function Add(sender, eventArgs) {
var grid = $find("<%=RadGridTest.ClientID %>");
var mt = grid.get_masterTableView();
var items = mt.get_dataItems();
var source = new Array();
var item = { Field1: false, Field2: "new item 1!!!" };
source[source.length] = item;
var item2 = { Field1: false, Field2: "new item 2!!!" };
source[source.length] = item2;
mt.set_dataSource(source);
mt.dataBind();
}
function gridRowBound (sender, args) {
var checkbox = args.get_item().findElement("Field1");
if (checkbox && checkbox != null) {
checkbox.checked = args.get_dataItem().Field1 == "True";
}
}
function gridRowCreated (sender, args) {
var checkbox = args.get_item().findElement("Field1");
if (checkbox && checkbox != null) {
checkbox.checked = args._gridDataItem.getDataKeyValue("Field1") == "True";
}
}
</
script
>
</
telerik:RadScriptBlock
>
<
form
id
=
"form1"
runat
=
"server"
>
<
asp:ScriptManager
runat
=
"server"
ID
=
"ScriptManager1"
/>
<
div
>
<
telerik:RadButton
ID
=
"RadButton1"
runat
=
"server"
Text
=
"Add"
OnClientClicked
=
"Add"
UseSubmitBehavior
=
"false"
AutoPostBack
=
"false"
/>
<
telerik:RadGrid
ID
=
"RadGridTest"
runat
=
"server"
AutoGenerateColumns
=
"false"
AllowMultiRowSelection
=
"true"
Height
=
"200px"
>
<
MasterTableView
Caption
=
""
ClientDataKeyNames
=
"Field1,Field2"
DataKeyNames
=
"Field1,Field2"
>
<
Columns
>
<
telerik:GridTemplateColumn
>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"Field1"
runat
=
"server"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Field2"
DataField
=
"Field2"
/>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
EnableRowHoverStyle
=
"true"
>
<
Selecting
AllowRowSelect
=
"true"
/>
<
Scrolling
AllowScroll
=
"True"
SaveScrollPosition
=
"True"
/>
<
ClientEvents
OnRowDataBound
=
"gridRowBound"
OnRowCreated
=
"gridRowCreated"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
</
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;
namespace
WebApplicationRadGridCheckBox
{
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
List<TestClass> lista =
new
List<TestClass>() {
new
TestClass() { Field1 =
true
, Field2 =
"JOJO"
} };
RadGridTest.DataSource = lista;
RadGridTest.DataBind();
}
}
public
class
TestClass
{
public
Boolean Field1 {
get
;
set
; }
public
String Field2 {
get
;
set
; }
}
}