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

insert records from NoRecords template

1 Answer 39 Views
This is a migrated thread and some comments may be shown as answers.
Top achievements
Rank 1
Tom asked on 04 May 2017, 02:44 PM

Hi, I'm trying to insert records into my database from code behind in my itemcommand.

I have the form setup in the  No Records Template in a nested RADGrid, but the GridNoRecordsItem does not have a Controls collection.  What am I missing?

Here is some of the pertinent code:


        protected void RadGrid2_ItemCommand1(object sender, GridCommandEventArgs e)
            switch (e.CommandName)
                case "InsertSubGoal":
                    string GoalID = string.Empty;
                    string SubGoal = string.Empty;
                    if (e.CommandArgument.ToString() == "Empty")
                        var insertedItem = (GridNoRecordsItem)e.Item;
                        GoalID = insertedItem.OwnerTableView.ParentItem.GetDataKeyValue("GoalID").ToString();
                        SubGoal = (insertedItem["SubGoal"].Controls[0] as TextBox).Text;

any help or sample code would be appreciated.



1 Answer, 1 is accepted

Sort by
Marin Bratanov
Telerik team
answered on 09 May 2017, 11:34 AM

Hi Tom,

The NoRecordsTemplate is just to show a message to the user.

If you want to insert a record, the grid must be in insert mode. You can do that by setting the IsItemInserted property of the master table view to true if there is no data. Here is a basic example

<telerik:RadGrid runat="server" ID="rg1" OnNeedDataSource="rg1_NeedDataSource">
            <telerik:GridBoundColumn DataField="ID"></telerik:GridBoundColumn>
                    some item template
                    insert item template here

protected DataTable GetGridData()
    DataTable tbl = new DataTable();
    tbl.Columns.Add(new DataColumn("someNumber", typeof(decimal)));
    tbl.Columns.Add(new DataColumn("name", typeof(string)));
    tbl.Columns.Add(new DataColumn("ID", typeof(int)));
    tbl.Columns.Add(new DataColumn("someColumn", typeof(string)));
    tbl.Rows.Add(new object[] { 123456789.123456789, "=cmd|'calc.exe'", 2, "5" });
    tbl.Rows.Add(new object[] { 123456789.567891234, "two", 3, null/*SIMULATE EMPTY VALUE*/ });
    tbl.Rows.Add(new object[] { -123456789.123456789, "three", 4, "5" });
    tbl.Rows.Add(new object[] { -123456789.567891234, "four", 5, "5" });
    return tbl;
protected void rg1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    //get data here
    DataTable ds = GetGridData();
    (sender as RadGrid).DataSource= ds;//will autogenerate columsn by default, as there is data now
    //clear it to simulate no data
    if(ds.Rows.Count == 0)//check for lack of data according to your data access layer logic
        (sender as RadGrid).MasterTableView.IsItemInserted = true;


Marin Bratanov
Telerik by Progress
Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Asked by
Top achievements
Rank 1
Answers by
Marin Bratanov
Telerik team
Share this question