How can we use javascript to get the control inside user control in RadGrid?
Problem: control in user control will
share the same ID
, so if we use "var cmb= rows[5].findControl("RadComboBox1")" will get
only one
RadComboBox1.
So how can we deal with that? The solution will be add additional HiddenField to store the
RadComboBox1 client ID, then use $find(hiddenfield.value) to get the real control. Here is the example:
User Control
WebUserControl1.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs"
Inherits="TelerikGridFindControlInColumn.WebUserControl1" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<telerik:RadComboBox ID="RadComboBox1" runat="server">
</telerik:RadComboBox>
WebUserControl1.ascx.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;
namespace TelerikGridFindControlInColumn
public partial class WebUserControl1 : System.Web.UI.UserControl
public RadComboBox RCB
return this.RadComboBox1;
protected void Page_Load(object sender, EventArgs e)
public void AddItem(string text, string value)
RCB.Items.Add(new RadComboBoxItem(text, value));
Test Page
Default.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="TelerikGridFindControlInColumn._Default" %>
<%@ Register Src="~/WebUserControl1.ascx" TagName="WebUserControl1" TagPrefix="uc" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
function GridCreated() {
var grid = $find("<%=RadGrid1.ClientID %>");
var MasterTable = grid.get_masterTableView();
var rows = MasterTable.get_dataItems();
// console.log(rows[5])
// console.log(rows[5].get_cell('def'))
// console.log(rows[5].get_cell('def'))
// console.log(rows[5].findElement('div_RadComboBox1'))
// console.log($find('ctl00_MainContent_RadGrid1_ctl00_ctl04_RadComboBox1'));
// var cmbbycol = $telerik.findControl(rows[5].get_cell('def'), "RadComboBox1");
// var cmbbycol2 = $telerik.findControl(rows[5].findElement('div_RadComboBox1'), "RadComboBox1");
// //var cmbbycol3 = $telerik.findControl(MasterTable.getColumnByUniqueName("def"), "RadComboBox1");
// var cmbbyrow = rows[5].findControl("RadComboBox1");
// alert(cmbbycol.get_value());
// alert(cmbbycol2.get_value());
// // alert(cmbbycol3.get_value());
// alert(cmbbyrow.get_value());
var abc_radcombobox1 = rows[5].findElement('abc_RadComboBox1');
var ghi_radcombobox1 = rows[5].findElement('ghi_RadComboBox1');
console.log($find(abc_radcombobox1.value));
console.log($find(ghi_radcombobox1.value));
console.log($find(abc_radcombobox1.value).get_value());
console.log($find(ghi_radcombobox1.value).get_value());
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
Welcome to ASP.NET!
To learn more about ASP.NET visit <a href="http://www.asp.net" target="_blank" rel="external nofollow" title="ASP.NET Website">www.asp.net</a>.
You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409" target="_blank" rel="external nofollow"
title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<telerik:RadGrid ID="RadGrid1" runat="server"
onitemdatabound="RadGrid1_ItemDataBound">
<MasterTableView AutoGenerateColumns="true">
<Columns>
<telerik:GridTemplateColumn HeaderText="abc" UniqueName="def" >
<ItemTemplate>
<asp:HiddenField ID="abc_RadComboBox1" runat="server" />
<uc:WebUserControl1 ID="uc1" runat="server"></uc:WebUserControl1>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="ghi" UniqueName="jkl">
<ItemTemplate>
<asp:HiddenField ID="ghi_RadComboBox1" runat="server" />
<uc:WebUserControl1 ID="uc2" runat="server"></uc:WebUserControl1>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<ClientEvents OnGridCreated="GridCreated" />
</ClientSettings>
</telerik:RadGrid>
</asp:Content>
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;
namespace TelerikGridFindControlInColumn
public partial class _Default : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
List<SampleEntity> list = new List<SampleEntity>();
for (int i = 0; i < 20; i++)
SampleEntity s = new SampleEntity("City" + i
, "PostalCode" + i
, "ContactName" + i);
list.Add(s);
RadGrid1.DataSource = list;
RadGrid1.DataBind();
protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
if (e.Item.ItemType == Telerik.Web.UI.GridItemType.Item || e.Item.ItemType == Telerik.Web.UI.GridItemType.AlternatingItem)
HiddenField abc_radcombobox1 = e.Item.FindControl("abc_RadComboBox1") as HiddenField;
WebUserControl1 uccmb1 = e.Item.FindControl("uc1") as WebUserControl1;
HiddenField ghi_radcombobox1 = e.Item.FindControl("ghi_RadComboBox1") as HiddenField;
WebUserControl1 uccmb2 = e.Item.FindControl("uc2") as WebUserControl1;
abc_radcombobox1.Value = uccmb1.RCB.ClientID;
ghi_radcombobox1.Value = uccmb2.RCB.ClientID;
/*sample data*/
uccmb1.AddItem("aaaaaaa", "0");
uccmb1.AddItem("bbbbbbb", "1");
uccmb2.AddItem("ccccccc", "2");
uccmb2.AddItem("ddddddd", "3");
public class SampleEntity
public string City { get; set; }
public string PostalCode { get; set; }
public string ContactName { get; set; }
public SampleEntity(string city, string postalCode, string contactName)
City = city;
PostalCode = postalCode;
ContactName = contactName;
版权声明:本文为CSDN博主「riverlau」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/riverlau/article/details/7163423
asp.net
server
object
assembly
Default.aspxOnOutSourceUCDropDownList1_SelectedIndexChangedDefault.aspx.csWebControlPageWebControlcsPage