gpt4 book ai didi

更改数据源时 DevExpress XtraGrid FocusedRowChanged 事件问题

转载 作者:行者123 更新时间:2023-12-01 13:01:14 30 4
gpt4 key购买 nike

这个问题困扰了我好几年,也许这里有人知道一个简单的解决方案,因为我刚刚再次遇到它。

问题:在将新的(不同的)数据源分配给网格之前,是否有任何方法可以让 XtraGrid“忘记”当前聚焦的行索引?

背景我们使用 XtraGrid 作为一种 Controller ,用于显示在多 Pane Winform 的另一个面板中。

现在想象一个假设场景,其中 XtraGrid 的数据源根据菜单选择不断变化。菜单项 1 使用自助餐厅今天主菜的列表填充网格:Id、Name。菜单项 2 使用用户当天必须调用的客户列表填充网格:ID、姓名。重要的是,这些是独立的不同数据源,并且正在分配和重新分配网格的数据源。

这个问题的关键事实:我们希望网格的 FocusedRowChanged 事件成为我们在 Controller 网格中捕获用户选择的单一位置。我们是一家“无意大利面条代码”的商店。 FocusedRowChanged 优于单击事件,因为它也处理键盘导航。具有焦点的行包含我们需要从数据库中获取以显示在面板 #2 中的详细记录的 ID。这行得通——大部分时间

这是它不起作用的原因:假设在给定的一天,用户必须联系的客户列表仅包含一行。因此,网格中的第一行(也是唯一一行)是焦点行。现在假设用户转到菜单并选择菜单项以显示当天的自助餐厅主菜。当用户单击 Entrees 列表中的第一项时,不会触发 FocusedRowChanged 事件,因为网格保留了来自先前数据源的聚焦行索引的内存。焦点行 index 没有改变。因此用户的选择不会触发任何东西。

我试图让 DevExpress 提供第二种更多的面向行对象的模式(与面向行索引的方法不同),网格中的每一行都有一个 GUID,并且每当 GUID 出现时就会触发 FocusedRowChanged 事件当前获得焦点的行的 GUID 与先前获得焦点的行的 GUID 不同,无论获得焦点的行索引是否碰巧相同。这将允许动态更改数据源并启用所需的行为。但他们提出异议。

所以我再问我的问题,有没有办法让 XtraGrid 在将新数据源分配给网格之前“忘记”当前聚焦的行索引?

最佳答案

蒂姆,当网格中只有一行数据然后更改数据源时,我遇到了完全相同的问题。我通过在设置新数据源后设置 gridview.FocusedRowHandle = -1 来解决它。

关于更改数据源时 DevExpress XtraGrid FocusedRowChanged 事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903190/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com