Dynamically Change Grid Column Header Text

5 posts, 1 answers
  1. Akhil Raj
    Akhil Raj avatar
    69 posts
    Member since:
    Aug 2012

    Posted 31 Jan 2010 Link to this post

    i have to change the grid column header text dynamically according to the combo text selected text.
    I tried to change in pre render event,  data bound etc . No changes affcted. but when post back again the header text changed .. Can you please help about this?
  2. Answer
    Steve avatar
    1855 posts
    Member since:
    Dec 2008

    Posted 31 Jan 2010 Link to this post

    Does this work for you?

        /// <summary> 
        /// Item databound for the radgrid, set the header text here based on the selected value of the combo 
        /// </summary> 
        protected void grid_ItemDataBound(object sender, GridItemEventArgs e) { 
            if (e.Item is GridHeaderItem) { 
                GridHeaderItem item = e.Item as GridHeaderItem; 
                item["CustomerID"].Text = combo.SelectedValue; 
        /// <summary> 
        /// Rebind the grid when the combo changes 
        /// </summary> 
        /// <param name="o"></param> 
        /// <param name="e"></param> 
        protected void combo_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) { 

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
    <!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"
        <form id="form1" runat="server"
            <telerik:RadScriptManager ID="scriptMan" runat="server" /> 
            <telerik:RadComboBox ID="combo" runat="server" Width="350px"  
                AutoPostBack="True" DataSourceID="CustomerDS" DataTextField="CompanyName"  
            <br /><br /><br /><br /><br /> 
            <telerik:RadGrid ID="grid" runat="server" DataSourceID="CustomerDS" GridLines="None" 
                <MasterTableView AutoGenerateColumns="False" DataKeyNames="CustomerID" DataSourceID="CustomerDS"
                        <HeaderStyle Width="20px"></HeaderStyle> 
                        <HeaderStyle Width="20px"></HeaderStyle> 
                        <telerik:GridBoundColumn DataField="CustomerID" DefaultInsertValue="" HeaderText="CustomerID" 
                            ReadOnly="True" SortExpression="CustomerID" UniqueName="CustomerID"
                        <telerik:GridBoundColumn DataField="CompanyName" DefaultInsertValue="" HeaderText="CompanyName" 
                            SortExpression="CompanyName" UniqueName="CompanyName"
                        <telerik:GridBoundColumn DataField="ContactName" DefaultInsertValue="" HeaderText="ContactName" 
                            SortExpression="ContactName" UniqueName="ContactName"
                        <telerik:GridBoundColumn DataField="ContactTitle" DefaultInsertValue="" HeaderText="ContactTitle" 
                            SortExpression="ContactTitle" UniqueName="ContactTitle"
                        <telerik:GridBoundColumn DataField="Address" DefaultInsertValue="" HeaderText="Address" 
                            SortExpression="Address" UniqueName="Address"
                        <telerik:GridBoundColumn DataField="City" DefaultInsertValue="" HeaderText="City" 
                            SortExpression="City" UniqueName="City"
                        <telerik:GridBoundColumn DataField="Region" DefaultInsertValue="" HeaderText="Region" 
                            SortExpression="Region" UniqueName="Region"
                        <telerik:GridBoundColumn DataField="PostalCode" DefaultInsertValue="" HeaderText="PostalCode" 
                            SortExpression="PostalCode" UniqueName="PostalCode"
                        <telerik:GridBoundColumn DataField="Country" DefaultInsertValue="" HeaderText="Country" 
                            SortExpression="Country" UniqueName="Country"
                        <telerik:GridBoundColumn DataField="Phone" DefaultInsertValue="" HeaderText="Phone" 
                            SortExpression="Phone" UniqueName="Phone"
                        <telerik:GridBoundColumn DataField="Fax" DefaultInsertValue="" HeaderText="Fax" SortExpression="Fax" 
                        <telerik:GridCheckBoxColumn DataField="Bool" DataType="System.Boolean" DefaultInsertValue="" 
                            HeaderText="Bool" SortExpression="Bool" UniqueName="Bool"
            <asp:SqlDataSource ID="CustomerDS" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindOAConnectionString %>" 
                SelectCommand="SELECT * FROM [Customers]" /> 

  3. Akhil Raj
    Akhil Raj avatar
    69 posts
    Member since:
    Aug 2012

    Posted 31 Jan 2010 Link to this post

    i don't know  what i did wrongly before post same i tried.anyway now working correctly.. thanks
  4. Craig
    Craig avatar
    14 posts
    Member since:
    Oct 2013

    Posted 30 May 2015 Link to this post

    I have the same issue.

    If I change the header text on columns for the radgrid on a postback... eg selecting a drop down list (with autopostback=true), the columns header text does not change until I do an additional postback... so the columns header text is always one step behind.

    If I rebind the grid after I have changed the header text, the correct header text is displayed, but I am unable to rebind as users could have entered data into the grid already.

    I have tried this on page_load and radgrid_PreRender, where I would expect this to work, but the correct header text is not showing... It seems the header text is simply put into viewstate for next time... very puzzling!

     Can anyone help please?

  5. Eyup
    Eyup avatar
    3134 posts

    Posted 03 Jun 2015 Link to this post

    Hi Craig,

    In order to achieve this requirement, you will need to change the text of the header cell directly. In order to do that, you can make avail of the GetItems() method:

    In your case it will be something similar to this:
    protected void RadGrid1_PreRender(object sender, EventArgs e)
        GridHeaderItem headerItem = RadGrid1.MasterTableView.GetItems(GridItemType.Header)[0] as GridHeaderItem;
        headerItem["ShipName"].Text = "Success";

    Hope this helps. Please give it a try and let me know if it works for you.

    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Back to Top