Devexpress GridControl:防止自动添加新行

时间:2014-06-30 01:46:43

标签: insert grid devexpress row

请指导我如何防止在DevExpress.XtraGrid.GridControl上自动添加新行

我想控制何时添加新行,在我的情况下,我正在使用keydown事件(CTRL + I)执行此任务。但是,如果我将焦点(光标指针)移动到右下方的区域到最后一行并单击,网格会自动添加新行。

enter image description here

GridControl.MainView是 BandedGridView ,其中包含数据源。

3 个答案:

答案 0 :(得分:2)

您可以使用BandedGridView.OptionsView.NewItemRowPosition属性。您可以将其值设置为NewItemRowPosition.None以隐藏新项目行。

另一种方法是处理BandedGridView.ShownEditor事件。在此内部,您可以检查BandedGridView.FocusedRowHandle属性是否等于GridControl.NewItemRowHandle并取消编辑器激活 这是一个例子:

private void bandedGridView1_ShowingEditor(object sender, CancelEventArgs e)
{
    if (bandedGridView1.FocusedRowHandle == GridControl.NewItemRowHandle)
    {
        // Do here additional checks if you need. After your checks set e.Cancel to true.
        e.Cancel = true;
    }
}

答案 1 :(得分:1)

您可以处理ValidateRow事件。如果设置e.Valid = false,则不会添加新行。因此,请检查您的对象是否为空或无效,并且只要键入了所需的值,您就可以将该行释放。

private void grvMyView_ValidateRow(object sender, ValidateRowEventArgs e)
{
            if (grvMyView.IsNewItemRow(e.RowHandle))
            {
               MyObject obj = grvMyView.GetRow(e.RowHandle) as MyObject;

               e.Valid = obj.IsValid();
            }
}

答案 2 :(得分:0)

从版本15开始,您只需将TableView的NewItemRowPosition设置为NewItemRowPosition.None即可。一定要先在TableView上调用CommitEditing()。