You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DevExpress ASP.NET MVC GridView如何按值设置聚焦行

MVCxGridView按单元格值匹配定位聚焦行实现方法

核心逻辑是先定位到目标值对应的行索引,再赋值给你已知的FocusedRowIndex属性即可,不需要依赖行键传参。

单页内匹配实现(当前分页可见范围查找)

直接在GridView的DataBound事件里遍历所有可见行,过滤非数据行后匹配目标单元格值即可,参考代码如下:

var grid = (MVCxGridView)s;
// 遍历当前所有可见行
for (int rowIndex = 0; rowIndex < grid.VisibleRowCount; rowIndex++)
{
    // 跳过表头、分组行、新增行等非数据行
    if (grid.GetRowType(rowIndex) != GridViewRowType.Data)
        continue;

    // 读取目标列值,替换"Names"为你实际的列FieldName
    var currentName = grid.GetRowValues(rowIndex, "Names")?.ToString();
    // 匹配目标值,这里用忽略大小写的对比,可根据需求调整
    if (string.Equals(currentName, "Walter", StringComparison.OrdinalIgnoreCase))
    {
        // 设置聚焦行
        grid.FocusedRowIndex = rowIndex;
        // 可选:自动滚动表格到目标行位置
        grid.MakeRowVisible(rowIndex);
        // 匹配成功后终止遍历
        break;
    }
}

跨分页匹配实现(全量数据范围查找)

如果表格开启了分页,上面的方法只会查找当前显示页的行,要全量查找可以直接从绑定的原始数据源匹配目标数据,再通过行键转成可见行索引:

var grid = (MVCxGridView)s;
// 从原始绑定数据源查找匹配项,替换YourDataSource为你实际的数据源对象
var targetData = YourDataSource.Cast<YourDataModel>().FirstOrDefault(item => item.Names == "Walter");
if (targetData != null)
{
    // 替换"Id"为你表格配置的主键字段名
    var targetIndex = grid.FindVisibleIndexByKeyValue(targetData.Id);
    if (targetIndex >= 0)
    {
        grid.FocusedRowIndex = targetIndex;
        grid.MakeRowVisible(targetIndex);
    }
}

注意事项

  • 读取单元格值时传入的列名必须和GridView列配置的FieldName完全一致,否则会返回空值导致匹配失败
  • 如果目标列存储的是数值、枚举等非字符串类型,先做对应类型转换再对比,不要直接转字符串避免格式误差
  • 如果表格开启了服务端模式(Server Mode),不要直接遍历VisibleRowCount,建议通过数据源查询匹配后再用FindVisibleIndexByKeyValue定位,避免性能问题

内容的提问来源于stack exchange,提问作者Michaelweston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 06:21:59