This is a migrated thread and some comments may be shown as answers.

"Cannot set property 'control' of undefined" error when using CommandItemTemplate

1 Answer 549 Views
Grid
This is a migrated thread and some comments may be shown as answers.
RB
Top achievements
Rank 1
RB asked on 13 May 2014, 10:43 PM
I have a radgrid and since I have custom buttons, I am using the CommandItemTemplate. But it throws "Cannot set property 'control' of undefined" error! When I comment out this._RadGrid1.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top; It does not throw the error and ofcourse the CommandItemTemplate is also not visible.
protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            
            this._RadLoadingPanel.ID = "_RadLoadingPanel";
            this._RadLoadingPanel.Transparency = 30;
            this._RadLoadingPanel.Skin = "WebBlue";
            this._RadLoadingPanel.BackgroundPosition = AjaxLoadingPanelBackgroundPosition.Center;
       
            this._RadGrid1.Skin = "WebBlue";
            this._RadGrid1.Width = Unit.Percentage(100);
            this._RadGrid1.GridLines = GridLines.None;
            this._RadGrid1.PageSize = 20;
            this._RadGrid1.AllowPaging = true;
            this._RadGrid1.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric;
            this._RadGrid1.AllowSorting = true;
            this._RadGrid1.AllowFilteringByColumn = false;
            this._RadGrid1.AllowAutomaticUpdates = false;
            this._RadGrid1.AutoGenerateColumns = false;
 
            this._RadGrid1.EnableLinqExpressions = false;
            this._RadGrid1.MasterTableView.NoMasterRecordsText = "No Deals found";
            this._RadGrid1.ShowGroupPanel = false;
            this._RadGrid1.ShowStatusBar = true;
            this._RadGrid1.GroupingEnabled = false;
 
            this._RadGrid1.ClientSettings.Selecting.AllowRowSelect = true;
            this._RadGrid1.ClientSettings.EnableRowHoverStyle = true;
            this._RadGrid1.ClientSettings.EnablePostBackOnRowClick = true;
            this._RadGrid1.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;
                //add buttons
            this._RadGrid1.MasterTableView.CommandItemTemplate = new DealTemplate(this._RadGrid1, "State");                             
 
            this._RadGrid1.MasterTableView.DataKeyNames = "PriceID";
            this._RadGrid1.MasterTableView.ClientDataKeyNames = "Status";
            this._RadGrid1.MasterTableView.EnableHeaderContextMenu = true;
 
            this._RadGrid1.MasterTableView.CommandItemSettings.ShowAddNewRecordButton = true;
            this._RadGrid1.ClientSettings.ClientEvents.OnRowSelected = "OnRowSelected";           
           
            this._RadGrid1.NeedDataSource += RadGrid1_NeedDataSource;
            this._RadGrid1.ItemDataBound += RadGrid1_ItemDataBound;
   
             #region Columns
}

1 Answer, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 14 May 2014, 06:53 AM
Hi,

I was not able to reproduce this error. Below is a sample code snippet I tried. Check this with yours and find out if the issue occurs and let me know.

C#:
RadGrid RadGrid1;      
protected void Page_Init(object source, System.EventArgs e)
{
    RadGrid1 = new RadGrid();
    RadGrid1.MasterTableView.DataKeyNames = new string[] { "OrderID" };
    RadGrid1.AllowPaging = true;
    RadGrid1.AutoGenerateColumns = false;
    RadGrid1.AllowSorting = true;      
    RadGrid1.AutoGenerateEditColumn = true;
    RadGrid1.NeedDataSource += new GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource);
 
    RadGrid1.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top; 
    RadGrid1.MasterTableView.CommandItemTemplate = new MyTemplate();      
 
    GridBoundColumn boundColumn;
    boundColumn = new GridBoundColumn();
    boundColumn.DataField = "OrderID";
    boundColumn.HeaderText = "OrderID";
    boundColumn.SortExpression = "OrderID";
    RadGrid1.MasterTableView.Columns.Add(boundColumn);
    boundColumn = new GridBoundColumn();
    boundColumn.DataField = "ShipCountry";
    boundColumn.HeaderText = "ShipCountry";
    boundColumn.SortExpression = "ShipCountry";
    RadGrid1.MasterTableView.Columns.Add(boundColumn);
    this.PlaceHolder1.Controls.Add(RadGrid1);
}
 
public class MyTemplate : ITemplate
{
    protected LinkButton lnkAdd;
    public void InstantiateIn(System.Web.UI.Control container)
    {
        lnkAdd = new LinkButton();
        lnkAdd.ID = "lnkAdd";
        lnkAdd.CommandName = RadGrid.InitInsertCommandName;
        lnkAdd.Text = "Add New Record";
        container.Controls.Add(lnkAdd);
    }
}
void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    RadGrid1.DataSource = GetDataTable("SELECT  * FROM Orders");
}
 
public DataTable GetDataTable(string query)
{
    String ConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlConnection conn = new SqlConnection(ConnString);
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(query, conn);
 
    DataTable myDataTable = new DataTable();
 
    conn.Open();
    try
    {
        adapter.Fill(myDataTable);
    }
    finally
    {
        conn.Close();
    }
    return myDataTable;
}

Thanks,
Princy
Tags
Grid
Asked by
RB
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Share this question
or