ColumnView.AddNewRow() Method

Adds a new record.

Namespace: DevExpress.XtraGrid.Views.Base

Assembly: DevExpress.XtraGrid.v21.2.dll


public virtual void AddNewRow()


Use the AddNewRow method to add a new record(row) to the View’s underlying data source. The View reflects any changes made to the data source immediately and focuses the new record. However, it’s possible to prevent moving the record focus. For more information, see the Focusing Cells topic.

The AddNewRow method is only available for data sources that support the IBindingList interface. When a new record is added, the data source may initialize certain values (key fields, for instance). Record initialization can also be performed manually by handling the ColumnView.InitNewRow event.

New row can be accepted in a number of ways:

The row can be discarded as follows:

Immediately after a row is added, you can identify this row with the ColumnView.FocusedRowHandle or GridControl.NewItemRowHandle property. To learn how to access row data, see Modify and Validate Cell Values.

The following sample illustrates how to add a new Data Grid row and instantly set its cell values. Also, see the Add and Remove Rows article for more examples.

using DevExpress.XtraGrid;
using System;
using System.ComponentModel;

namespace SampleGridApplication {
    public partial class Form1 : DevExpress.XtraEditors.XtraForm {
        public Form1() {
            this.Load += Form1_Load;
            //end-users cannot add rows
            gridView1.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.False;

        private void Form1_Load(object sender, EventArgs e) {
            //load sample data base
            gridControl1.DataSource = SampleDS();

        private void button1_Click(object sender, EventArgs e) {
            //add a new row
            //set a new row cell value. The static GridControl.NewItemRowHandle field allows you to retrieve the added row
            gridView1.SetRowCellValue(GridControl.NewItemRowHandle, gridView1.Columns["Name"], "Please enter new value");

        //sample data source
        public BindingList<Entry> SampleDS() {
            BindingList<Entry> ds = new BindingList<Entry>();
            ds.Add(new Entry("One", 1));
            ds.Add(new Entry("Two", 2));
            ds.Add(new Entry("Three", 3));
            ds.AllowNew = true;
            return ds;

    //sample data source entry
    public class Entry {
        public Entry() { }
        public Entry(string name, Int32 id) {
            Name = name; ID = id;
        public string Name { get; set; }
        public Int32 ID { get; set; }

End-users can add new records via the navigator control. An embedded navigator can be enabled via the GridControl.UseEmbeddedNavigator property. For Grid Views, an end-user can also add new rows via the new item row.

Refer to the Add and Remove Rows topic for more details on adding and deleting records via code.


Detail pattern Views do not contain data and they are never displayed within XtraGrid. So, the AddNewRow member must not be invoked for these Views. The AddNewRow member can only be used with real Views that are displayed within the Grid Control. The real Views with which an end-user interacts at runtime can be accessed using the following methods.

See Also