它应该是一个非常常见的工作流程,所以我很惊讶 C# gridview 或 DevExpress 都没有提供简单的方法来完成它。
示例:
MyColumn 是组合框类型列的字段。当用户尝试编辑此字段中的值时,他必须在下拉列表中选择一个值。当网格有 1 行时,他可以选择“值 A”、“值 B”或“值 C”。如果用户在第一行选择了“值 A”,那么在第二行中,MyColumn 的可用值将变为“值 B”和“值 C”。
目前,我使用 DevExpress 以一种肮脏的方式进行操作,每次删除、插入或修改操作后,我都会计算组合框存储库(修改 RepositoryItemComboBox.Items 属性),并在 CustomRowCellEdit 事件处理程序中将更新的存储库分配给列。代码非常复杂和脆弱。
------更新------ 我刚刚想出了一个更好的用例示例:假设网格要求用户选择他最喜欢的 5 个美国州。所以 State 列是一个组合框类型的列,最初有一个包含 50 个状态的列表。如果用户在第一行选择 CA,那么在第二行他将只有 49 个状态可供选择。在这种情况下,您总是希望每行中的值都是唯一的,否则就没有意义了。