Code Bye

GridControl如何动态新增行,且给新行赋值?

GridControl如何动态新增行,且给新行赋值?


11分
先在方法中加入2行代码
gvTask.AddNewRow(); //会触发事件
gvTask.OptionsBehavior.Editable = true;//保存更改内容
//下面是事件
private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)

{

ColumnView View = sender as ColumnView;

View.SetRowCellValue(e.RowHandle, View.Columns[0], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount – 2), gridView1.Columns[0])); //复制最后一行的数据到新行

View.SetRowCellValue(e.RowHandle, View.Columns[1], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount – 2), gridView1.Columns[1])); //复制最后一行的数据到新行

}
你也可以根据需要更改,流程就是这样

引用 1 楼 honstat 的回复:

先在方法中加入2行代码
gvTask.AddNewRow(); //会触发事件
gvTask.OptionsBehavior.Editable = true;//保存更改内容
//下面是事件
private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)

{

ColumnView View = sender as ColumnView;

View.SetRowCellValue(e.RowHandle, View.Columns[0], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount – 2), gridView1.Columns[0])); //复制最后一行的数据到新行

View.SetRowCellValue(e.RowHandle, View.Columns[1], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount – 2), gridView1.Columns[1])); //复制最后一行的数据到新行

}
你也可以根据需要更改,流程就是这样

你好,我用了AddNewRow,但是并没有触发InitNewRow事件,这个是什么情况?

人呢?自己顶一下!

1分
你要选择gridview1找到他的InitNewRow事件,双击

5分
1楼 正解。。。
引用 5 楼 duanzi_peng 的回复:

1楼 正解。。。

我拖了个空白的控件测试,发现也并没有触发嘛,这个是要设置什么属性吗?

public partial class A : DevExpress.XtraEditors.XtraForm
    {
        public A()
        {
            InitializeComponent();
            this.gridView1.InitNewRow += gridView1_InitNewRow;
        }

        private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            this.gridView1.AddNewRow();
        }
    }

3分
引用 6 楼 webhermit102 的回复:
Quote: 引用 5 楼 duanzi_peng 的回复:

1楼 正解。。。

我拖了个空白的控件测试,发现也并没有触发嘛,这个是要设置什么属性吗?

public partial class A : DevExpress.XtraEditors.XtraForm
    {
        public A()
        {
            InitializeComponent();
            this.gridView1.InitNewRow += gridView1_InitNewRow;
        }

        private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            this.gridView1.AddNewRow();
        }
    }

你设置 newRow的 显示位置了么

引用 7 楼 duanzi_peng 的回复:
Quote: 引用 6 楼 webhermit102 的回复:
Quote: 引用 5 楼 duanzi_peng 的回复:

1楼 正解。。。

我拖了个空白的控件测试,发现也并没有触发嘛,这个是要设置什么属性吗?

public partial class A : DevExpress.XtraEditors.XtraForm
    {
        public A()
        {
            InitializeComponent();
            this.gridView1.InitNewRow += gridView1_InitNewRow;
        }

        private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            this.gridView1.AddNewRow();
        }
    }

你设置 newRow的 显示位置了么

你好,我测试的是一个空白的控件,没有数据源绑定,仅仅是通过AddNewRow方法看是否触发,InitNewRow 事件,结果发现没有触发。

另外,程序里面的控件也是没有绑定数据源的,但是是通过以下代码添加

commodityBusiness.GetCommodityListInId(commodityIdList).ForEach(item =>
                {
                    this.gridView1.AddNewRow();                                //此处没有触发事件

                    this.gridView1.SetFocusedRowCellValue("CommodityNumber", item.CommodityNumber);
                    this.gridView1.SetFocusedRowCellValue("CommodityName", item.CommodityName);
                    this.gridView1.SetFocusedRowCellValue("Unit", item.Unit);
                    this.gridView1.SetFocusedRowCellValue("UnitPrice", item.UnitPrice);
                    this.gridView1.SetFocusedRowCellValue("Count", item.Count);
                });
刚刚在youtube视频里面看了一个GridControl的InitNewRow事件的一个例子,里面的代码非常简单,但是点击按钮时候能触发此事件,我就开始怀疑了到底是不是13.1.8的这个版本的这个事件有Bug

下面是youtube的截图

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明GridControl如何动态新增行,且给新行赋值?