
<
script language="javascript" type="text/javascript">
function ddl_Lookup_clientblur(sender, eventArgs) {
var text = sender.get_text();
var item = sender.findItemByText(text);
var inputElement = sender.get_inputDomElement();
if (!item)
sender.clearSelection();
}
</
script>
<%
--OnClientBlur="ddl_Lookup_clientblur" --%>
<asp:HiddenField ID="hidSourceid" runat="server" />
<telerik:RadComboBox ID="ddl_Lookup" runat="server" DropDownWidth="400px"
ItemsPerRequest="25" EnableLoadOnDemand="true" Width="324px" MarkFirstMatch="true"
EnableViewState="true" HighlightTemplatedItems="true" AllowCustomText="true"
EnableItemCaching="true" ShowMoreResultsBox="true"
ItemRequestTimeout="250" EnableVirtualScrolling="true"
DataTextField="IndentNo" DataValueField="IndentNo" OnItemsRequested="ddl_Lookup_ItemsRequested"
OnItemDataBound="ddl_Lookup_ItemDataBound" EmptyMessage="Please select IndentNo."
OnClientBlur="ddl_Lookup_clientblur"
onselectedindexchanged="ddl_Lookup_SelectedIndexChanged">
<HeaderTemplate>
<ul>
<li class="col1">Indent No.</li>
<li class="col1">Date</li>
<%
-- <li class="col1">GrowerType</li>--%>
<li class="col1">Grower</li>
</ul>
</HeaderTemplate>
<ItemTemplate>
<ul>
<li class="col1">
<%
# DataBinder.Eval(Container.DataItem, "IndentNo")%>
</li>
<li class="col1">
<%
# DataBinder.Eval(Container.DataItem, "IndentDate", "{0:" + ConfigurationManager.AppSettings["LongDatePattern"].ToString() + "}")%></li>
<%
-- <li class="col1">
<%# DataBinder.Eval(Container.DataItem, "GrowerType")%>
</li>--
%>
<li class="col1">
<%
# DataBinder.Eval(Container.DataItem, "Grower")%>
</li>
<%
-- <li class="col1">
<%# DataBinder.Eval(Container.DataItem, "DocumentDate", "{0:" + ConfigurationManager.AppSettings["LongDatePattern"].ToString() + "}")%></li>--
%>
</ul>
</ItemTemplate>
</
telerik:RadComboBox>

<%@ 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>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; } }}
Hi everybody and thanks for your help! Im facing this problem: Ive a Radgrid which has a GridTemplateColumn which has a CheckBox inside. In the page load 1 row is inserted in the radgrid and displayed properly. Then, there is a RadButton (which only Works in the client side). When pressed it binds the radgrid to a new datasource with 2 rows. The problem is that the first row is displayed correctly while the second row is missing the checkbox. I did not use Eval since the radgrid must be bind in the client side (then, Ive used gridRowBound and gridRowCreated). Ive prepared an example code to show exactly this problem: you just need to créate a Web Application “WebApplicationRadGridCheckBox” and modify the Default.aspx code with the code below.
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; } }}
