请指导我如何防止在DevExpress.XtraGrid.GridControl上自动添加新行
我想控制何时添加新行,在我的情况下,我正在使用keydown事件(CTRL + I)执行此任务。但是,如果我将焦点(光标指针)移动到右下方的区域到最后一行并单击,网格会自动添加新行。
GridControl.MainView是 BandedGridView ,其中包含数据源。
答案 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()。