【发布时间】:2013-07-25 02:04:05
【问题描述】:
这应该是一个非常常见的工作流程,所以我很惊讶 C# gridview 或 DevExpress 都没有提供简单的方法来完成它。
示例:
MyColumn 是组合框类型列的字段。当用户尝试编辑此字段中的值时,他必须在下拉列表中选择一个值。当网格有 1 行时,他可以选择“值 A”、“值 B”或“值 C”。如果用户在第一行选择了“值 A”,那么在第二行中,MyColumn 的可用值将变为“值 B”和“值 C”。
目前我正在使用 DevExpress 以一种肮脏的方式进行操作,每次删除、插入或修改操作后,我都会计算组合框存储库(修改 RepositoryItemComboBox.Items 属性),并在 CustomRowCellEdit 事件处理程序中将更新的存储库分配给列。代码非常复杂和脆弱。
--更新------ 我刚刚想出了一个更好的用例示例: 假设网格要求用户选择他最喜欢的 5 个美国州。所以 State 列是一个组合框类型的列,最初有一个包含 50 个状态的列表。如果用户在第一行选择 CA,那么在第二行他将只有 49 个状态可供选择。在这种情况下,您总是希望每行中的值都是唯一的,否则就没有意义了。
【问题讨论】:
-
简单来说,您希望组合框的值对每一行都是唯一的吗?
-
创建一个类,将您填充到组合框中的项目。所以你的组合框得到一个 List
。例如,在您的类中,您定义了一个键和值成员以及一个属性“状态”。这可能是一个布尔标志。组合框始终显示所有状态 = true 的项目。因此,每个组合框都会在数据源处获取 List ,如果您进行更改,您只需更改状态。也许这适用于您的情况。 -
致 Gian Acuna:是的,我愿意。对不起,如果我不清楚
-
致 Sebi:现在存储库没有绑定到数据源,但它的项目列表在运行时以编程方式添加或删除。我会看看你的方法是否可行。
-
Sebi,我认为 DevExpress 不支持这一点:“组合框始终显示所有状态为 true 的项目。”或者,也许我没有找到它。你能给出更具体的指导吗?谢谢。
标签: c# gridview combobox devexpress