【发布时间】:2018-05-10 18:30:37
【问题描述】:
我是 DevExpress GridControl 的新手。 我需要在网格中找到一个特定的单元格,然后用它的值做一些事情。 请问我该怎么办?
在网格的Loaded 方法中,我尝试使用myGrid.FindRowByValue("ProductType","ABC"),,但总是给出一个负数。
谢谢。
【问题讨论】:
标签: c# wpf devexpress gridcontrol
我是 DevExpress GridControl 的新手。 我需要在网格中找到一个特定的单元格,然后用它的值做一些事情。 请问我该怎么办?
在网格的Loaded 方法中,我尝试使用myGrid.FindRowByValue("ProductType","ABC"),,但总是给出一个负数。
谢谢。
【问题讨论】:
标签: c# wpf devexpress gridcontrol
这是你可以尝试的代码
for (int i = 0; i < gridView1.DataRowCount; i++) {
object b = gridView1.GetRowCellValue(i, "FieldName");
if (b != null && b.Equals(<someValue>)){
gridView1.FocusedRowHandle = i;
return;
}
}
您可以访问此链接了解更多详情。
https://www.devexpress.com/Support/Center/Question/Details/Q132599/get-row-by-cell-value
【讨论】:
与 XtraGrid 不同,WPF 的 DXGrid 不提供 DataRowCount 属性 - 这就是我们建议检查 GridControl 的 ItemsSource 的原因。另一方面,我们的网格具有 VisibleRowCount 属性,这在某些情况下会很有用。
要完成此任务,请手动迭代可见的网格行,如下所示。
void MoveFocusToLast(GridControl grid, string fieldName, object value) {
for (int i = grid.VisibleRowCount - 1; i >= 0; i--) {
var handle = grid.GetRowHandleByVisibleIndex(i);
var currentValue = grid.GetCellValue(handle, fieldName);
if (currentValue != null && currentValue.Equals(value)) {
grid.View.FocusedRowHandle = handle;
return;
}
}
}
Grid 还提供了FindRowByValue 方法,它允许您 按特定单元格值查找一行。该方法返回的句柄 相应的行,您可以通过设置使该行可见 FocusedRowHandle 属性或调用 ScrollIntoView。我 已经准备了一个示例来演示这种方法。
【讨论】: