Search code examples
c#asp.netgridviewradgridradgridview

Convert Asp:GridView To RadGridView


I have been using this syntax for my asp:gridview and I am attempting to convert it to a RadGridView now.

I get an error of

Unable to cast object of type 'Telerik.Web.UI.GridBoundColumn' to type 'System.Web.UI.WebControls.DataControlField'.'

On this -

DataControlField

How should this syntax be changed to work with a RadGrid?

    private int GetColumnIndexRad(Telerik.Web.UI.RadGrid grid, string colName)
    {
        foreach (DataControlField col in grid.Columns)
        {
            if (col.HeaderText.ToLower().Trim() == colName.ToLower().Trim())
            {
                return grid.Columns.IndexOf(col);
            }
        }
        return -1;
    }

Solution

  • You can't use GridView's DataControlField instance in Telerik's RadGrid because they're using different naming to define grid elements (columns, rows, etc.).

    Try iterating MasterTableView.Columns collection to find column index based on column name:

    private int GetColumnIndexRad(Telerik.Web.UI.RadGrid grid, string colName)
    {
        foreach (GridColumn column in grid.MasterTableView.Columns)
        {
            if (column.UniqueName.ToLower().Trim() == colName.ToLower().Trim())
            {
                return column.OrderIndex - 1;
            }
        }
        return -1;
    }
    

    NB: If RadGrid.MasterTableView.Columns doesn't work, try alternatives like RadGrid.MasterTableView.AutoGeneratedColumns or RadGrid.MasterTableView.RenderColumns.

    Similar issue: Get Column Index in RadGrid