![]() |
演示功能1:下拉过滤:“省份”和“城市”都是下拉输入,但是二者之间有过滤的逻辑关系,在js中设定了“城市”下拉的过滤表达式 |
| Example1: “省份”采用dropTreelist 树列表的XML描述文件, 以及它的关联下拉 省份、城市 |
Example2: “省份”采用dropList 树列表的XML描述文件, 它的关联下拉 "城市" 同左 | |||
1.它的OnReady( )部分:
AF1.func("Build", "treelist/t16.xml");
//表达式:cityId列的下拉的provinceId列=当前行的provId
var exp = "provinceId=provId@parent \r\n cityId";
AF1.func("Filter", exp);
2.它的OnEvent( )部分,仅用于清除CityId:
if(Event=="DropdownSelChanged" && p2=="provId")
AF1.func("SetCellData", p1 + "\r\n cityId \r\n");
|
1.它的OnReady( )部分:
AF2.func("Build", "treelist/t16_2.xml");
//表达式:cityId列的下拉的provinceId列=当前行的provId
var exp = "provinceId=provId@parent \r\n cityId";
AF2.func("Filter", exp);
2.它的OnEvent( )部分,仅用于清除CityId:
if(Event=="EditChanged" && p2=="provId")
AF2.func("SetCellData", p1 + "\r\n cityId \r\n");
|
![]() |
演示功能2:“省份”下拉后,“城市”能立即自动选该省份的第一个城市 |
function OnReady(id)
{
...
else if(id=='AF3') {
AF3.func("Build", "treelist/t16.xml \r\n autoUpdate=true"); //注:autoUpdate="true" 也可以直接写在XML文件的 Properties 中
...
关键点2. 在事件中,查找该省份的第一个城市:
function OnEvent(id, Event, p1, p2, p3, p4)
{
...
else if(id=='AF3') {
if(Event == "DropdownSelChanged") {
if(p2 == "provId") {
var prov = AF3.func("GetCellData", p1 + "\r\n" + p2); //取得所选的"省份"
AF3.func("ApplyFilter", p1 + "\r\n cityId"); //强制让过滤立即生效
var h = AF3.func("GetHandle", "cityId"); //取得“城市”的下拉句柄
var row = AF3.func(h + "find", "provinceId='" + prov + "'"); //从下拉中找到该省份的第一个城市的行号
var s = AF3.func(h + "GetCellData", row + " \r\n cityId"); //取得城市
AF3.func("SetCellData", p1 + "\r\n cityId \r\n" + s ); //置城市
}
}...
疑问分析