New to Telerik UI for ASP.NET AJAX? Start a free 30-day trial

Accessing Controls in RadGrid

Updated on Oct 7, 2026

Accessing Controls in Built-in Columns

Grid markup

ASP.NET
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" OnItemDataBound="RadGrid1_ItemDataBound">
    <ClientSettings>
        <Selecting AllowRowSelect="true" />
    </ClientSettings>
    <MasterTableView AutoGenerateColumns="false">
        <Columns>
            <telerik:GridNumericColumn UniqueName="NumericCol" DataField="Freight"></telerik:GridNumericColumn>
            <telerik:GridButtonColumn UniqueName="ButtonCol" Text="Button" ButtonType="FontIconButton" />
            <telerik:GridCheckBoxColumn UniqueName="CheckBoxCol" DataField="IsChecked" />
            <telerik:GridDateTimeColumn UniqueName="DateTimeCol" DataField="OrderDate" />
            <telerik:GridDropDownColumn UniqueName="DropDownCol" DataField="ShipName" ListTextField="ShipName" ListDataMember="ShipName" />
            <telerik:GridHyperLinkColumn UniqueName="HyperLinkCol" DataNavigateUrlFields="ShipName" DataTextField="ShipName" />
            <telerik:GridEditCommandColumn UniqueName="EditCommandCol" />
            <telerik:GridClientSelectColumn UniqueName="ClientSelectCol" />
            <telerik:GridExpandColumn UniqueName="ExpandCol" />
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

Code behind

C#
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item.IsInEditMode)
        {
            // Controls that are only available in Edit Mode

            GridEditableItem editItem = (GridEditableItem)e.Item;

            RadNumericTextBox rNumericTextBox = editItem["NumericCol"].Controls[0] as RadNumericTextBox;

            // Depending on the PickerType property of the Column, the GridDateColumn may render different controls, DatePicker, TimePicker or DateTimePicker
            RadDatePicker rDatePicker = editItem["DateTimeCol"].Controls[0] as RadDatePicker;
            RadTimePicker rTimePicker = editItem["DateTimeCol"].Controls[0] as RadTimePicker;
            RadDateTimePicker rDateTimePicker = editItem["DateTimeCol"].Controls[0] as RadDateTimePicker;

            //Depending on the DropDownControlType property of the Column, the GridDropDownColumn may render DropDownList or RadComboBox controls
            DropDownList ddl = editItem["DropDownCol"].Controls[0] as DropDownList;
            RadComboBox rComboBox = editItem["DropDownCol"].Controls[0] as RadComboBox;

            CheckBox chkBox = editItem["CheckBoxCol"].Controls[0] as CheckBox;
        }
        else if (e.Item is GridDataItem)
        {

            // Controls that are only available in Display Mode (DataItem)
            
            GridDataItem item = (GridDataItem)e.Item;

            ElasticButton expandBtn = item["ExpandCol"].Controls[0] as ElasticButton;
            ElasticButton editCommandButton = item["EditCommandCol"].Controls[0] as ElasticButton;
            ElasticButton buttonColButton = item["ButtonCol"].Controls[0] as ElasticButton;
            HyperLink hyperLink = item["HyperLinkCol"].Controls[0] as HyperLink;
            CheckBox chkbox = item["ClientSelectCol"].Controls[0] as CheckBox;
            CheckBox chkbox2 = item["CheckBoxCol"].Controls[0] as CheckBox;
        }
    }

Accessing Controls in Template Column

While accessing cells in template columns remains the same, use a slightly different approach to access the controls in the cell. For example, to access a TextBox declared in the column's ItemTemplate:

C#
TableCell cell = dataItem["ColumnUniqueName"];
TextBox textBox = dataItem.FindControl("TextBoxID") as TextBox;

Accessing Controls in Edit/Insert Mode

When editing or inserting a grid item, you can access and modify the controls generated in the editable item.

C#
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
       GridEditableItem editableItem = e.Item as GridEditableItem;
       // execute custom logic
    }
}

However, you will need to use a different approach corresponding to the chosen EditFormType.

  • AutoGenerated:
C#
TextBox textBox = editableItem["ColumnUniqueName"].Controls[0] as TextBox;
  • Template:
C#
TextBox textBox = editableItem.FindControl("TextBox1") as TextBox;
  • WebUserControl:
C#
UserControl userControl = editableItem.FindControl(GridEditFormItem.EditFormUserControlID) as UserControl;
TextBox textBox = userControl.FindControl("TextBox1") as TextBox;

InPlace EditMode is supported only for an AutoGenerated EditFormType. In this case, the editable item is of type GridDataItem or GridDataInsertItem, rather than GridEditFormItem or GridEditFormInsertItem.

Accessing Controls in Batch Edit Mode

Essentially, Batch editing is different from the other edit modes. It is mainly a client-side functionality, so use JavaScript approaches to access the individual elements generated in the cells. You can do this with the client-side event handlers provided by RadGrid for its Batch editing feature: OnBatchEditOpened Client-Side Event

Let's take for example the GridDateTime column of a RadGrid with 10 items per page. Unlike the other Edit modes, there are not 10 different RadDatePicker controls generated to edit each of the records, but there is only 1 picker loaded on the server, which contributes for ideal performance and rendering optimization. If you access the generated picker on code-behind and apply some properties, e.g. FocusedDate, the setting will be applied to all the picker elements of the column.

How to access the built-in column editor

C#
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
    GridTableView masterTable = ((RadGrid)sender).MasterTableView;
    GridDateTimeColumnEditor editor = masterTable.GetBatchColumnEditor("OrderDate") as GridDateTimeColumnEditor;
    RadDatePicker picker = editor.PickerControl;
    picker.FocusedDate = new DateTime(1990, 3, 3);
}

How to access custom controls in a template column

C#
protected void RadGrid1_PreRender(object sender, EventArgs e)
{
	RadComboBox combo = ((sender as RadGrid).MasterTableView.GetBatchEditorContainer("CategoryID").FindControl("rcbCategory") as RadComboBox);
	combo.EnableLoadOnDemand = true;
}

Read more in the Batch editing mode article.

See Also