高级模型/视图编程:表格数据在树结构中的表示
1. 通用委托的优势
在数据库等列具有同质数据类型的场景中,通用委托具有以下三个关键优势:
-易于更改和扩展:可以轻松更改特定列使用的委托,若模型增加列,也能方便添加额外的列委托。
-避免代码重复:使用列委托可避免创建大量特定于模型的自定义委托时不可避免的代码重复。例如,只需编写一个富文本行编辑委托、一个日期/时间编辑委托等。
-可重用性:一旦创建了特定数据类型的列委托,它可以在任何数量的通用委托和模型中,为使用该数据类型的每一列重复使用。这意味着针对每种数据类型,只需对一个列委托进行错误修复和功能增强。
2. 树视图表示表格数据的应用场景
假设需要用户选择一个数据项,且该选择依赖于之前的选择。例如,让用户选择一个特定的机场,他们需要先选择国家,再选择城市,最后选择机场。一种实现方式是使用三个组合框,分别填充国家、城市和机场信息,但这种方式要求用户使用三个独立的小部件进行选择,且难以直观看到所有可用选项。
使用树视图是解决选择依赖数据项的一种有效方法。以机场选择为例,树的根节点为国家,每个国家节点下有城市分支,每个城市分支下有机场叶子节点。这样用户更容易遵循选择路径(且只能选择有效路径),同时也便于我们获取用户完整的国家/城市/机场选择。
与表格视图相比,树视图更紧凑且易于导航。例如,若有100个国家,平均每个国家有4个城市,每个城市有2个机场,表格视图需要100 × 4 × 2 = 800行,而树视图只需100行(每个国家一行),且每行