FocusedRowHandle在DevExpress GridView c#中没有正确设置



我试图更新我的GridView,以自动选择用户填写字段并按下添加后添加的新行。然而,在尝试设置FocusedRowHandle属性时,我没有运气。FocusedRowHandle值保持在-2147483648,即使我尝试给它赋值,如下面的代码所示:

private void gvExample_RowUpdated(object sender, RowObjectEventArgs e)
{
try
{             
ExampleMethodToUpdateTableAdapter();
GridView view = sender as GridView;
Object obj;
if (e.RowHandle != GridControl.NewItemRowHandle)
obj = view.GetRow(view.FocusedRowHandle);
else
{
dsExample.dtExample.DefaultView.Sort = "ID desc";
DataTable dtSorted = dsExample.dtExample.DefaultView.ToTable(true);
int lastID = Convert.ToInt32(dtSorted.Rows[0]["ID"]);
gvExample.FocusedRowHandle = lastID;
}             
}
catch (Exception ex)
{              
}
}

当进入else语句时,目的是从数据表中获取最新的ID,现在它已经被更新了(因为e.RowHandle的值是-2147483648,因为它是一个新行),并将焦点行设置为这个ID。

我试着在网上看看这个,但似乎找不到解决方案,所以我想我应该在这里发帖。如果我错过了什么信息,我很抱歉。

如果我理解正确,你想关注新行(这是最后一行):

gridView.FocusedRowHandle = gridView.RowCount - 1;

如果没有,则必须在网格中搜索id,并使用for i 0->显示数据表格。RowCount - 1,然后当您找到Id时,将焦点放在具有i值的行。

for (int i = 0; i <= gridView.RowCount - 1; i++) 
{
if (gridView.GetRowCellValue(i, gridView.columns(column_number)))
{
gridView.FocusedRowHandle = i;
}
}

最新更新