4.富输入功能
富输入(Rich-Edit)功能是Supcan Treelist相当重要的功能,也是作为强交互的Grid控件所必备的基本功能。Treelist内置如下10种EditType:
1.Edit,普通输入,其中数值型、日期型允许有和PowerBuilder类似的格式掩码(EditMask);
2.EditWithButton, 右侧带按钮的Edit(
),点击按钮会抛出OnEvent(id, "Clicked",,,,“button”)事件;
3.MultiLineEdit,多行编辑(
);
4.Checkbox,复选框(
), Checkbox的选中/不选中状态和数据有关, 数据规则为:
1:选中;
0:未选中;
2:状态不确定(方框内显示一实框);
-1:不显示Checkbox;
5.RadioButton,单选框(
),单选框必须由多个列组成,并允许按GroupID分成多个独立的组. 其列的数据规则为:
1:选中;
0:未选中(也不显示).
6.button,按钮列(
),点击按钮会抛出OnEvent(id, "Clicked",,,,“button”)事件。按钮表面除了可以显示文字,也可以显示图标;每列允许并排有多个按钮,详细规格请参见Treelist XML文档规范. 列的数据规则为:
1:正常显示按钮;
0:按钮显示为Disabled;
其它值: 不显示按钮,作为纯文字显示;
7.Droptreelist / EditAbleDroptreelist,下拉嵌套的treelist/可编辑的下拉treelist(
),下拉弹出的是另一个独立的Treelist,有点类似于 PowerBuilder 中的DDDW;
8.Droplist / EditAbleDroplist,下拉列表/可编辑的下拉列表(
),Windows操作系统自带的Combobox下拉控件,相当于是Html的<Option>、<Select>;
Demo页中有很多演示页面,淋漓尽致地展示了各种富输入功能,请具体分析这些XML描述文件。
上述EditType中,有几种是下拉类型,下拉比较复杂,在此稍作详细分析。
4.1 DropTreelist
DropTreelist类型的下拉列,都必须定义"droplistID"属性,该"droplistID"对应于当前XML描述文件中根元素<Droplists>下某个具体的<Droplist>,例如:

下拉的单元格的值数据(value)和显示串(text)通常是不一样的,显示什么样的串由关联的<Droplist>决定,这和数据库中的主-外键对应关系原理是一样的。
<Droplist>中的 Treelist="?" 就是下拉后弹出的Treelist, 它是一个独立的Treelist.
<Droplist>中的 DataCol 和 DisplayCol 属性很重要,分别指定了数据列和显示列,因为被引用的外部Treelist可能会有很多列.
从上图可以看出,<Droplists> 节点相当于是字典库,集中登记了可能会被引用到的所有外部Treelist.

你可以在这里直接指定下拉的 dataURL: <Droplist id="?" Treelist="?" dataURL="?" ...>, 这里的dataURL级别高于其默认的 dataURL.
4.2 DropList
下图的“客户”、“国家”使用了Droplist输入类型,然而其数据字典的来源却不一样;

Custom(客户)下拉指向了一个外部Treelist, 表示它的键-值数据来自这个外部Treelist;
Country(国家)下拉字典, 是一个真正的字典:已内置了字典数据;

国家的字典还可以这样写<DropList id="country" dataURL="dataserv/action?did=country"/>, 动态从后端拉数据!

还有一种不太常用的处理方法:不指定droplistID, 如<col name="country" edittype="droplist">国家</col>,通过全局函数中的 "droplist_"族函数动态为下拉字典添加键-值对.
4.3 EditWithButton
EditWithButton可以采用下拉字典,也可以不采用下拉字典.
在有些场合中,采用下拉字典来维护EditWithButton的键-值对,能简化开发。采用了下拉字典后,其存取数据、维护键-值对的API,就和常规的DropList类型一视同仁了。
要让EditWithButton采用下拉字典,只要和Droplist一样指定DroplistID即可: <col name="?" edittype="editWithButton" droplistID="?" ...>,当然这个下拉只是作为键-值对的缓存而已,绝不会弹出显示的,EditWithButton的交互行为,完全交由您在OnEvent( )事件中处理。

也可以让 DroplistID="auto",系统能自动为其分配一个空的下拉字典.