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

如何将DevExpress GridView初始SelectedRowsCount设置为0?

解决DevExpress GridView初始化默认选中第一行的问题

嘿,这个问题我之前做WinForms项目时也碰到过——DevExpress的GridView确实有个默认行为:绑定数据后会自动选中第一行。不过要实现初始化时SelectedRowsCount == 0的需求,有几个简单且可靠的办法:

方法一:利用DataSourceChanged事件清除选中(推荐)

这个方法能确保每次数据源变化后都自动重置选中状态,避免遗漏各种场景:

private void gridView1_DataSourceChanged(object sender, EventArgs e)
{
    var gridView = sender as GridView;
    if (gridView == null) return;

    // 清除所有选中行
    gridView.ClearSelection();
    // 将焦点行设为无效值,彻底取消默认选中的视觉效果
    gridView.FocusedRowHandle = GridControl.InvalidRowHandle;
}

注意:记得在设计器里给GridView绑定这个事件,或者在代码里手动注册哦。

方法二:手动绑定数据后直接重置状态

如果是在窗体初始化时手动赋值数据源,可以在绑定完成后立即执行重置操作:

// 假设你已经完成数据源绑定
gridControl1.DataSource = yourDataCollection;

// 重置选中和焦点状态
gridView1.ClearSelection();
gridView1.FocusedRowHandle = GridControl.InvalidRowHandle;

额外说明:单选择模式下的特殊处理

如果你的GridView是单选择模式(OptionsSelection.MultiSelect = false),默认情况下FocusedRow和SelectedRow是关联的。设置FocusedRowHandle = GridControl.InvalidRowHandle后,SelectedRowsCount自然会变成0,完全符合你的需求。

实现点击行获取值的逻辑

完成上述设置后,你可以在RowClick事件里处理用户点击行的逻辑,获取对应数据:

private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
    // 确保点击的是有效行(排除表头、空行等)
    if (e.RowHandle >= 0)
    {
        // 获取整行数据(可以强转为你的实体类)
        var selectedRow = gridView1.GetRow(e.RowHandle) as YourEntityClass;
        // 或者获取某一列的值
        var cellValue = gridView1.GetRowCellValue(e.RowHandle, "ColumnName");
        
        // 这里处理你的业务逻辑
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:35:02