2012-02-20 59 views
1

我正在使用linq2sql将记录添加到我的datagridview并刷新网格。刷新后立即将行选择移动到顶部。我如何告诉它突出显示最近添加的记录?C#如何以编程方式在DataGridView上重新定位行选择

不知道这是否会有所帮助,但我已经包含下面的代码我正在使用找出所选行的pk。因为我想要做的是相反的。由于

 //get selected row index 
     int index = this.dataGridView1.CurrentRow.Index; 
     //get pk of selected row using index 
     string cellValue = dataGridView1["pkColumn", index].Value.ToString(); 
     //change pk string to int 
     int pKey = Int32.Parse(cellValue); 
+0

是网格数据绑定,还是你直接插入行到grid.Rows? – 2012-02-20 21:18:52

+0

网格是数据绑定 – 2012-02-21 01:52:41

回答

4

如果事先知道,每当有新项目添加,它应该出现在列表的底部,你可以使用:

int index = this.dataGridView1.Rows.Count - 1; 
    this.dataGridView1.Rows[index].Selected = true; 
    this.dataGridView1.FirstDisplayedScrollingRowIndex = index; 

但是,如果您的订单列表中其他列,那么你不会得到预期的结果。

我建议你,就是寻找你需要给到,这可以通过一个函数来进行选择的排索引,让我们说int SearchRowIndexForPKValue(int pKey),将在列的单元格值范围内进行查找包含您的PK/ID("pkColumn")返回行索引。以这样的方式,上面的代码应该是这样的:

int index = SearchRowIndexForPKValue(pKey); 
    this.dataGridView1.Rows[index].Selected = true; 
    this.dataGridView1.FirstDisplayedScrollingRowIndex = index; 

编辑:int SearchRowIndexForPKValue(int pKey)不是DataGridView的现有内置方法。你必须声明它并在代码中实现它;对于该方法的主体,您可以从this post获取代码。

+0

我得到SearchRowIndexForPKValue在当前上下文中不存在 – 2012-02-21 02:37:37

+1

当然Adam355,它不是DataGridView的函数,也不是来自.NET框架库,只是一个命名示例。如果你正在使用LINQ,请看[这里](http://stackoverflow.com/questions/2995970/how-to-find-the-row-id-from-datagridview-given-a-row-value),那里你可以根据已知的单元格值找到需要获取行索引的代码。 – 2012-02-21 09:08:23

+1

感谢您的帮助 – 2012-02-21 21:26:48

相关问题