如何获得RowHandle(当它变得有效时)的新行网格(devexpress)
本文关键字:devexpress 新行 有效 网格 RowHandle 何获得 | 更新日期: 2023-09-27 18:15:18
我有一个网格,当用户添加新行并正在编辑它时,我想在他试图将焦点转移到另一行时弹出保存/丢弃当前更改选项消息。
问题是我无法获得新行的处理,所以我可以这样做,如果prevfocushandde == newRowHandle &&editModeOn
我只有-214…作为默认的newrow句柄,但是在行验证之后,grid为这个新行生成一个新的有效行句柄。在哪里记录尝试在RowUpdated,但它没有被调用,到那时句柄还没有更新。
当最终用户开始编辑新的项目行/卡时,ColumnView。引发InitNewRow事件。您可以处理此事件来初始化新记录中的特定字段。一旦焦点转移到另一行,新添加的行将被添加到数据源中,并显示一个空白的新项行。当修改的行即将失去焦点时,将引发ValidateRow事件。处理此事件以指定行数据是否有效,以及是否允许焦点移动(您可以使用ColumnView。IsNewItemRow方法来确定指定的行是否是新项行)。在添加行之后,它的句柄等于BaseView。DataRowCount - 1.
相关主题:
- 新项目行概述
- 标识行和卡
- 添加和删除记录
- 验证行
无论我从问题中理解到什么,你都要做下面的事情:
List<int> rowIndex = new List<int>();
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
if (!rowIndex.Contains(e.RowIndex))
{
rowIndex.Add(e.RowIndex);
MessageBox.Show("Are you want to save changes?", "Save Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
}
}
可以使用下面的函数。
public static bool IsCorrectRowHandle(GridView view, int rowHandle)
{
bool result = false;
try
{
System.Data.DataRow row = view.GetDataRow(rowHandle);
if (row != null)
result = true;
}
catch
{
return result;
}
return result;
}
使用函数;
if (bgwInvoiceDetails.RowCount > 0)
{
if (ADevExpress.DevExpressMethods.IsCorrectRowHandle(bgwInvoiceDetails, GridControl.NewItemRowHandle))
{
bgwInvoiceDetails.SetRowCellValue(GridControl.NewItemRowHandle, colExchangeType, leExchangeCode.EditValue);
bgwInvoiceDetails.SetRowCellValue(GridControl.NewItemRowHandle, colExchangePrice, teExchangePrice.EditValue);
}
for (int i = 0; i < bgwInvoiceDetails.RowCount; i++)
{
if (ADevExpress.DevExpressMethods.IsCorrectRowHandle(bgwInvoiceDetails, i))
bgwInvoiceDetails.SetRowCellValue(i, colExchangePrice, teExchangePrice.EditValue);
}
}