在 gridview 中显示选定的行

Show selected row in gridview

我有一个带有 RadGridView 的数据输入表单。数据在行的主字段中按字母顺序索引。当我添加一个新行并按 update 时,它当然会转到其在行顺序中的位置。但我不仅希望新行被选中,而且我还希望显示我的网格 window。当我在 C# 中使用默认值 GridView 时,这段代码运行良好:

private void btnUpdate_Click(object sender, EventArgs e)
{
    int id = 0;            
    id = Convert.ToInt32(lblId.Text);               
    foreach (var dgr in gridViewCompanies.Rows)
    {
        if (dgr.Cells[0].Value.Equals(tbl.ID))
        {
            dgr.IsSelected = true;
            dgr.Cells[0].IsSelected = true;
            gridViewCompanies.FirstRowIndex = dgr.Index;
            break;
        }
    }
 }

(我只是复制了这段代码的相关部分)

但现在我正在使用 RadGridView(出于某些其他原因),最后一行 gridViewCompanies.FirstRowIndex = dgr.Index; 似乎不起作用。这意味着我的新行 选中,但视图不会显示它。我必须向下滚动才能找到新添加的行。

    private void btnUpdate_Click(object sender, EventArgs e)
    {
        int id = 0;            
        id = Convert.ToInt32(lblId.Text);               
        foreach (var dgr in gridViewCompanies.Rows)
        {
            if (dgr.Cells[0].Value.Equals(tbl.ID))
            {
                dgr.IsSelected = true;
                dgr.Cells[0].IsSelected = true;

                this.radGridView.TableElement.VScrollBar.Value = dgr.Index;
                break;
            }
        }
     }

试试这个代码

这就是最终起作用的方法:

private void btnUpdate_Click(object sender, EventArgs e)
    {
        int id = 0;            
        id = Convert.ToInt32(lblId.Text);               
        foreach (var dgr in gridViewCompanies.Rows)
        {
            if (dgr.Cells[0].Value.Equals(tbl.ID))
            {
                dgr.IsSelected = true;
                dgr.Cells[0].IsSelected = true;GridTableElement tableElement = this.gridViewCompanies.CurrentView as GridTableElement;
                        tableElement.ScrollToRow(dgr.Index);

                break;
            }
        }
     }