10.函数


  Supcan Treelist的函数是通过插件/加载项的 func(string funcname, string paras) 函数间接调用的,Supcan Treelist组件的可用funcname及用途说明如下表。
  很多函数需要行、列参数,行、列参数的书写规则为:
分类函数名用途
初始函数创建Treelist
加载数据
刷新数据
基本函数取得行数
取得列数
动态更改 Properties 属性
取得 Properties 属性内容
设置打印配置属性
取得打印配置属性
取得 Properties 中的全部自定义属性名
动态更改列属性
取得列的属性内容
取得某列的全部自定义属性名
动态更改分组(Group)属性
取得分组(Group)的属性内容
取得某下拉树列表的属性
更改下拉内容属性
增加下拉字典资源
取得当前是否以树展现
切换到以树或列表展现
取得Treelist或下拉的句柄
打开freeform工具条
关闭freeform工具条
打开用于输入的freeform对话框
单元格数据取得某单元格的数据
设置某单元格的数据
取得某单元格的显示内容
设置某单元格的显示内容
同时设定某单元格的 key-value对
取得某单元格对应到下拉树列表选中行中某列的数据
设置整行的单元格数据
设置整列的单元格数据
取得某行某个GroupID的单选框(RadioButton)的选中列
取得某下拉List的当前选中行顺序号
选中下拉List中的某行
取得当前输入框中的文字
设置当前输入框中的文字
取得某字段唯一的值
单元格属性取得某单元EditAble
单独设置某单元格EditAble
取得某单元的背景色
单独指定某单元的背景色
取得某单元的文字色
单独指定某单元的文字色
取得某单元的文字水平对齐
单独指定某单元的文字水平对齐
取得某单元的文字垂直对齐
单独指定某单元的文字垂直对齐
取得某单元的字体序号
单独指定某单元的字体序号
取得某单元是否超链接
单独指定某单元是否为超链接
取得某单元的Tip
单独指定某单元的Tip
取得某单元的左侧/右侧小图标
单独指定某单元的左侧/右侧小图标
设置某单元格的自定义属性
取得某单元格的自定义属性的值
取得某单元格的所有自定义属性
单元格合并合并某行给定范围内相同内容的单元格
合并某列给定范围内相同内容的单元格
多个列按大类、小类方式, 跨行合并相同内容的单元格
合并指定范围内的单元格
解除单元格的合并
取得某单元格的状态
取得某单元格所在的合并区域中的主单元格(即左上角单元格)
取得覆盖了某个单元格的合并范围
将主单元格的数据复制给被合并的各个单元格
树相关是否树节点行
取得某行在树中的层次级别,从0开始计数
取得某行的父节点所在行
取得某行的第一个儿子
取得某行的所有儿子
取得某行的下一个/前一个同级(即同辈、兄弟)的行
更改树的图标
取得树的图标的URL
展开树节点
展开树的前 n 层节点
收拢树节点
树节点是否已展开
删除所有子孙
某行是否Lazyload行
重新整理 TreeCombine 的父节点的 Checkbox
重新整理 treeformat=byPid 的单列多层树的树杈树叶
强制设定某Lazyload行没有子孙
当前行 /
当前单元格
取得当前选中的行
取得当前选中的行
取得当前选中行的数量
某行是否被选中
取得当前选中的单元格
选定当前行
将焦点切换到某单元格
收起当前正处于下拉状态的树列表
结束当前单元格的输入状态
锁定当前行,使之无法被切换
解除锁定当前行
行列增删插入行
插入行
插入列
删除行
删除行
删除当前行
复制当前行
粘帖到当前行
粘帖到新增行
移动某列的位置
移动某行的位置
行列属性遍历行
遍历列
遍历可视列
是否合计行
是否小计行
取得某小计行的分类层次级别,从1开始计数
取得某行的Key(即键值)
某行是否能修改
某列是否能修改
置某行能否修改
置某列能否修改
取得列名
取得列标题
单独指定某行是否允许被删除(仅限于右键菜单)
取得某行是否允许删除
取得某行被单独指定的背景色
单独指定某行的背景色
取得某行被单独指定的文字色
单独指定某行的文字色
某行是否Enable
置某行为Enable或disable
某行是否隐藏
隐藏某行
某列是否隐藏
隐藏某列
取得isCheckboxOnly列标题处的CheckBox的状态
设置isCheckboxOnly列标题处的CheckBox的状态
取得某列所属的分组(Group)
行列操作保证让某个单元格或某行在屏幕中可见
条件搜索
条件搜索
按键值搜索
取得某列(或多列)的唯一的值的数组
过滤
对某个下拉执行过滤
使2个Treelist之间能够拖拉行
终止2个Treelist之间的行拖拉
将某单元格/某行/某区块内容复制进内存剪切板
窗口滚动到某行
取得窗口首个可见行
提交验证
取得修改过的内容, 包括增、删、改
取得某行或整表的修改状态
修改某行的“新增行”状态(和GetRowChanged的 "N" 相关)
取得某单元格是否被修改过
强制更改某单元格的修改状态
强制更改某列所有单元格的修改状态
合并修改内容,清除行和单元格的修改标记,以避免重复提交.
取得被删除的总行数
取得被删除的行中某行的Key
恢复被删除的行
Undo/Redo开启Undo功能
Undo功能是否已开启
执行Undo
执行Redo
将当前状态保存到 Undo 缓存
当前是否有Undo可操作
当前是否有Redo可操作
清空Undo缓存以重置Undo
其它取得当前Treelist的定制信息
设置Treelist定制信息
增加自定义的弹出菜单项
配置内置的右键菜单项,使之能显示
配置内置的右键菜单项,使之不显示
取得表达式(Expresses)
设置表达式(Expresses)
重新新建表达式、合计小计
是否能够重画
设置让Treelist能够重画或不能重画
打印预览
直接打印
从 Excel 文件导入数据
取得XML格式的全部数据
打开从 Excel 导入数据的对话框
打开转换输出对话框、或直接转换输出
指定转换输出的文件名
打开删除行对话框
增设快捷键

函数详解:

Build根据XML描述文件创建Treelist  
参数1XML所在的URL(相对或绝对),或者直接就是XML大串
参数2可选, 允许是XML中下的任何属性,表示将强制采用本属性, 多个属性间以分号(;)分隔,例如 isTree=false;editable=true
可见参数2能方便地使单个XML应用于多种场景, 当然也可以调用SetProp( )、SetColProp( )、SetDroplistProp( )动态更改属性
返回值1 - 成功; 空串 - 失败(将自动弹出失败页面)
示例AF.func("build", "../tr3.xml \r\n isTree=true;editable=true");
AF.func("build", '<?xml version="1.0"?><TreeList> ...(略) </TreeList>');


Load加载数据,数据格式可以为XML、JSON、TXT(TSV)、TSV-Ex
参数1数据所在的URL(相对或绝对), 或直接的XML/JSON/TSV/TSV-Ex数据大串;
参数2可选, 格式为 Mode=[?];FillMode=[?];insertAt=[?];asNewRow=[?];Node=[?];GroupSep=[?];FadeInStep=[?];LoadUserProp=[?];Para1=[?];method=[?], 其含义分别为:
mode - 同步/异步模式,如果等于"asynch", 表示异步(多线程)加载,异步加载能改善服务器端响应时间过久而导致的界面滞涩.
FillMode - 数据填充方式, 默认为空(表示先彻底清除原有数据),也可以为如下之一:
  replaceByOrder - 不增删行,仅逐行替换数据;
  replaceByKey - 不增删行,仅按相同Key的行替换数据;
  insert - 不清理原有的数据,新数据添加到表中;
  insertNewKey 或 insertNewRow - 不替换,仅插入新的 key 的行(即 key 在树列表中不存在的行);
  注:replaceByOrder 或 replaceByKey 时,数据的列可以少于树列表的列,未包含在数据中的列不会被替换.
insertAt - 当fillmode = insert 或 insertNewKey 时,用来指定插入位置(行号, 前插), -1表示从末尾添加:
asNewRow - 可以为true/false, 默认false,用于标记加载的行的"N"(新增行标记),用于提交:
Node - 指定XML数据内所在节点名.
GroupSep - 用于当XML/JSON数据中的节点名采用分组表头Group的id时,下属各列的数据分隔符,默认是斜杠("/");
FadeInStep - 屏幕展现时的淡入淡出效果,0至255,数字越小效果越明显,0表示关闭此效果,默认采用<Properties>中的同名属性.
LoadUserProp - true/false, 是否把XML中的附加属性作为单元格的自定义属性一起加载,以便让GetCellProp( )函数能存取。考虑到对性能的影响,默认是false的. XML自定义附加属性例如下图的 jtc2="2331":

method - http的发送方法,为Get / PostEncodeURI / Post,默认是Get. 如果为PostEncodeURI,则自动将URL中问号(?)后面的部分移到http body中,并对文字作EncodeURI转码处理; 如果是Post,则不作转码处理.
Para1 - 可以为data/URL, 表示声明上面的“参数1”是纯数据串还是一个URL,一般用于TSV格式的数据,因为TSV格式的数据有时候很难自动判断到底是数据还是URL。如果不声明,系统优先判断为URL .

备注1:如果是异步加载,那么在本Load( )函数后面不应该再执行针对本Treelist的其它函数,应该在“Load”事件中作后续处理,否则异步将失去意义(非常重要);
备注2:replaceByOrder 和 replaceByKey 不是很常用,加载的数据的列是原Treelist列的子集,用于增量刷新部分列;
备注3:TSV格式数据不支持Node、FillMode、insertAt选项;
返回值1 - 成功; 空串 - 失败(将自动弹出失败页面)
备注建议该URL能返回 SoapLike 格式的异常包
示例AF.func("load", "../datacenter/dataprov.aspx?id=11800102");
AF.func("load", "../datacenter/dataprov.aspx?id=11800102 \r\n fillmode=replaceByOrder");
AF.func("load", '{"Record": [{"Country":"Austria","OrderID":"10258","CustomerID":"ERNSH"}, {"Country":"Austria","OrderID":"10233","CustomerID":"GROSH"}]}');


Refresh刷新数据
参数可选, true/false(默认),true表示如果数据有改动,能弹出对话框询问用户是否刷新.
返回值(无)


GetRows取得行数
参数(无)
返回值数值
示例var rows = AF.func("getRows", "");


GetCols取得列数
参数(无)
返回值数值


SetProp(用途1)动态更改XML文档中 Properties 定义的属性、以及自定义属性  
参数1属性名, 包括Properties中的自定义属性
参数2内容串. 如果是自定义属性,空串表示删除该自定义属性
返回值(无)
备注1.更改dataURL属性相当于是调用Load( )函数,其内容可以是绝对或相对URL(相对于XML描述文件),也可以是XML/JSON大串;
2.更改sort属性相当于执行了排序操作
示例AF.func("setProp", "sort \r\n ShipCity a, OrderDate d");


GetProp(用途1)取得XML文档中 Properties 的属性内容
参数1属性名, 包括Properties中的自定义属性
参数2可选,用于 "Sort" 属性,true/false。true表示在指定静态排序情况下,按硕正静态排序格式输出;false表示输出当前真实的排序,默认是 false
返回值内容


SetProp(用途2)设置打印配置属性
参数1固定的串,为 Print 或 PrintPage
参数2XML串
返回值(无)
备注更改打印参数,需要借助全局函数中的DOM函数集
示例//如下例子是把打印纸的左边界修改为10毫米:
var xml=AF.func("GetProp", "Print");
var hDOM = AF.func("dom_new", xml); //创建DOM对象
var hMargin = AF.func("dom_find", hDOM + "\r\n margin"); //查找节点
AF.func("dom_SetProp", hMargin + "\r\n left \r\n 10"); //设置
xml = AF.func("dom_export", hDOM); //输出xml
AF.func("SetProp", "Print \r\n" + xml); //完成
AF.func("dom_delete", hDOM); //销毁对象


GetProp(用途2)取得打印配置属性, 即 PrintPage 节点下的全部内容
参数固定的串,为 Print 或 PrintPage
返回值XML串
备注1.打印属性稍复杂,需要您对XML规范中的 PrintPage 节点进行分析;
2.返回的XML串内容不多,因为默认的设置就不出现在XML中了;


GetUserProps取得 Properties 中的全部自定义属性名
参数(无)
返回值属性名,多个属性名之间以逗号分隔


SetColProp动态更改XML文档中某 Col 的属性、以及自定义属性  
参数1列名或列号,建议用列名
参数2属性名
参数3内容
返回值(无)
备注1.若要更改列标题文字,请用“Title”属性;
2.少数属性如name、atLayer、extentRows、ref是无法修改的
示例AF.func("SetColProp", "CustomerID \r\n edittype \r\n droptreelist");


GetColProp取得XML文档中某 Col 的属性内容、或者自定义属性的内容
参数1列名或列号,建议用列名
参数2属性名
返回值内容
备注1.若要获取列标题文字,请用“Title”属性;
2.如果属性是 "isHide", 返回值只是1或0,如果要判断 absHide 或 absShow, 属性应该用 "isAbsHide" 或 "isAbsShow"


GetColUserProps取得某列的全部自定义属性名
参数列名或列号,建议用列名
返回值自定义属性名,如果有多个自定义属性,则以逗号分隔


SetGroupProp动态更改XML文档中某 Group 的属性
参数1Group 的 ID
参数2属性名, 只能是 title(或name)、headerFontIndex(或fontIndex)、textColor(或color)、Align 这几种
参数3内容
返回值1/0 - 成功/失败
示例AF.func("SetGroupProp", "GrpID1 \r\n title \r\n 本年度");


GetGroupProp取得XML文档中某 Group 的属性内容
参数1Group 的 ID
参数2属性名, 只能是 title(或name)、headerFontIndex(或fontIndex)、textColor(或color)、Align 这几种
返回值内容


GetDroplistProp取得某下拉树列表的属性
参数1Droplist的ID, 也可以是某列的列名
参数2属性名, 例如 dataURL, RefreshDelay, treelist, dataCol, displayCol 等XML中定义的属性
返回值内容


SetDroplistProp动态更改XML中某 Droplist 的属性
参数1Droplist的ID, 也可以是某列的列名
参数2属性名
参数3内容
返回值(无)
备注1.更改dataURL相当于是重新加载数据,其内容可以是绝对或相对URL(注意:是相对于XML描述文件,而不是页面),也可以是XML/JSON大串,且对Edittype为Droplist、 DropTreelist均能生效;
2.若treelistURL内容是相对URL,那么是相对于该XML描述文件的
3.id是无法修改的
示例AF.func("SetDroplistProp", "sex \r\n dataURL \r\n <items><item key=1>男</item><item key=2>女</item></items>");


AddDroplist动态增加下拉资源(Droplists\Droplist)  
参数可包含id、treelistURL、dataURL等6个属性,以“;”分隔。 例如"id=cus;treelistURL=cus.xml;dataURL=http://www.abcde.com/aa/aa"
返回值1 - 成功; 空串 - 失败(id为空或重复)
示例AF.func("AddDroplist", "id=customer;treelistURL=customer.xml;DataCol=id;DisplayCol=name");


GetAsTree取得当前是否以树展现
参数(无)
返回值1/0 - 是/否


SetAsTree切换到以树或列表展现
参数true - 树, false - 列表
返回值1/0 - 成功/失败


GetHandle取得当前TreeList、或某下拉TreeList、或某下拉List的句柄  
参数可以为:
空串(无参数) - 取当前TreeList的句柄;
topBar (或tBar) - 取顶部工具条的Freeform句柄;
bottomBar (或bBar) - 取底部工具条的Freeform句柄;
innerDialog - 取内部非模式对话框的Freeform句柄;
Validation - 取Validation的句柄;
某下拉列的列名 - 表示取得某列的下拉DropTreelist、或下拉DropList、或EditWithButton的Droplist字典的句柄;
返回值整数串
备注操控下拉TreeList的内容请参见“扩展函数”、操控下拉List的内容请参见“全局函数”


OpenFreeformBar打开freeform工具条  
参数1可以为:
 空串(无参数) - freeform采用已定义的 <freeformRes> 元素中的freeform;
 url - 采用外部一个freeform的URL;
 id=[?] - 采用 <freeformRes> 下的某个freeform, id是该freeform的id;
参数2可选,0/tBar/topBar - 顶部工具条; 1/bBar/bottomBar - 底部工具条。默认topBar
返回值(无)


CloseFreeformBar关闭freeform工具条  
参数可选,0/tBar/topBar - 顶部工具条; 1/bBar/bottomBar - 底部工具条。
默认值是:如果当前只开启了一个工具条,那么默认的就是这个工具条,否则默认值是topBar
返回值(无)


OpenEditFreeformDialog打开用于输入的freeform对话框
参数行号
返回值(无)
备注即回车或双击时打开的对话框,请参见 Properties 中的 editFreeformId 属性


GetCellData取得某单元格的数据
参数1行号
参数2列名或列号,建议采用列名
参数3可选, true/false(或1/0), true表示取原始缓存中的数据(即被你修改前的数据), 默认是false(或0)
参数4可选, true/false(或1/0), 表示优先从输入框中取数(当输入框打开着时),还是直接从树列表中取数, 默认是true, 即优先从输入框中取数。
注1:当参数3为true时,本参数无效, 即原始值只能从树列表取;
注2:大多数情况下,输入框中的内容和树列表的内容是一致的,本参数意义不大
返回值


SetCellData设置某单元格的数据  
参数1行号
参数2列名或列号,建议采用列名
参数3内容串
参数4可选,true(或1)表示修改原始缓存中的数据(即被你修改前的数据),默认是false(或0).
这个选项一般用于强制更改"NMD"状态, 请参见下面"提交"类函数:GetRowChanged( )
参数5可选,true(或1)表示自动修改 TreeCombine 的其它关联行的CheckBox内容, 默认是false(或0)
返回值1 - 成功; 空串 - 失败
备注1. 严重警告:参数2和参数3之间不得留有多余空格,否则结果将不是你所期望的,例如:
  AF.func("SetCellData", "0 \r\n city \r\n "+ vCity);  //执行结果是左侧有多余空格
2.如果内容串中含回车,需要先把回车转义成 "\\r\\n"


GetCellText取得某单元格的显示内容  
参数1行号
参数2列名或列号,建议采用列名
返回值
备注显示内容是指有下拉、或显示掩码的列,或者是通过 SetCellDataText 函数设置了 key-value对的内容,有别于真实数据(data)的显示串,说白了就是你在屏幕上看到的文字


SetCellText设置某单元格的显示内容
参数1行号
参数2列名或列号,建议采用列名
参数3内容串
返回值1 - 成功; 空串 - 失败
备注常用于和Droplist绑定的EditWithButton, 否则和SetCellData( )同义.


SetCellDataText同时设定某单元格的 key-value对,包括值、和显示的内容
参数1行号
参数2列名或列号,建议采用列名
参数3值串
参数4内容串
返回值1 - 成功; 空串 - 失败
备注1.普通的列都可以拥有简易的 key-value对字典,不管是否下拉;
2.如果 edittype 为 droplist, 此 key-value对 将自动加入下拉字典.


GetDropCellData取得某单元格对应到下拉树列表选中行中某列的数据
参数1行号
参数2列名或列号,建议采用列名
参数3下拉树列表的列名
参数4可选,true(或1)表示当该单元格正在编辑中时, 主键的值取编辑窗中输入的内容, 例如在 DropdownSelChanged 事件中执行本函数时, 此时数据尚未同步到单元格; false(或0)表示取单元格的数据 , 默认是 false
返回值
备注仅用于该列的 EditType 为 DropTreeList 或 EditAbleDropTreeList 的情形
示例如下例子表示 CustomerId 列为下拉树列表, 从第0行单元格对应的下拉树列表的选中行中,取得该下拉树列表的 Country 列的内容:
var v = AF.func("GetDropCellData", "0 \r\n CustomerId \r\n Country");


SetRowCellData设置整行的单元格数据  
参数1行号
参数2XML或JSON大串(允许包含多行内容)
参数3可选, true(或1)表示修改原始缓存中的数据(即被你修改前的数据), 默认是false(或0).
这个选项一般用于强制更改"NMD"状态, 请参见下面"提交"类函数:GetRowChanged( )
返回值被修改的行数
示例AF.func("SetRowCellData", "0\r\n {id:'k101', price:33.40, orderdt:'2011/12/21'}");


SetColCellData设置整列的单元格数据, 支持表达式,该函数非常有用  
参数1列名或列号,建议采用列名
参数2内容串,支持以"="开头的表达式
参数3可选,开始行号,默认0
参数4可选,结束行号,默认-1, 表示末尾行
参数5可选, true(或1)表示修改原始缓存中的数据(即被你修改前的数据), 默认是false(或0).
这个选项一般用于强制更改"NMD"状态, 请参见下面"提交"类函数:GetRowChanged( )
返回值1 / 0 - 成功 / 失败,失败原因有:行列不正确、企图统一设置树节点列
示例AF.func("SetColCellData", 'price \r\n0'); //price设置成0
AF.func("SetColCellData", 'price \r\n'); //price设置成 null
AF.func("SetColCellData", 'price \r\n=if(product=102, 0, 100)'); //按条件设


GetRadioCol取得某行某个GroupID的单选框(RadioButton)的选中列
参数1行号
参数2GroupID号,如果只有一个分组,则可忽略
返回值选中的列名
备注没有SetRadioCol函数的,因为直接执行SetCellData置选中列的值为1即可.


GetDroplistIndex取得某下拉List的当前选中行顺序号
参数1行号
参数2列名或列号,建议采用列名
返回值本单元格中的下拉列表的当前选中行, 从0开始计数
备注一般用于非排序的下拉List


SetDroplistIndex选中下拉List中的某行
参数1行号
参数2列名或列号,建议采用列名
参数3本单元格中的下拉列表中的顺序号, 从0开始计数
返回值1 / 0 - 成功 / 失败
备注一般用于非排序的下拉List


GetEditText取得当前输入框中的文字
参数(无)
返回值
备注通常用在事件中,因为你很难把握当前输入框是否正打开着


SetEditText设置当前输入框中的文字
参数
返回值(无)
备注通常用在事件中,因为你很难把握当前输入框是否正打开着


GetAutoId取得某字段唯一的随机值
参数1列名或列号,建议采用列名。仅支持 string、int、double三种类型的字段
参数2本参数仅用于 string 型字段,格式为 len = [?]; Prefix=[?], 含义如下:
lenlength - 生成的随机串的长度,范围是从1到32,默认是6。如果您设得太小,比如设为1, 很可能会发生程序内部死循环而崩溃;
Prefix - 生成的串的前缀,这个前缀的长度是不算在 len 中的;
返回值值串
备注1.生成过程是随机、并遍历整个表判断是否唯一的;
2.如果字段是 string 型,生成的随机串是由数字 0-9 和字母 A-Z 混合组成的,每个字符相当于有36种取值, 默认的6字长的串,值的表达范围是36的6次方, 相当于21亿多;
3.<col> 的 AutoId 属性,其内部实现时也是用到了本函数,但本函数的调用与 AutoId 是否已定义无关.
示例var s = AF.func("GetAutoId", "ID \r\n len=8;Prefix=@V");


GetCellEditAble取得某单元EditAble
参数1行号
参数2列名或列号,建议采用列名
返回值1或0, 空串表示失败


SetCellEditAble单独设置某单元格的EditAble,其等级高于行列的EditAble规定,但低于 Properties 中的EditAble规定.
参数1行号
参数2列名或列号,建议采用列名
参数31/0,或true/false、yes/no
返回值(无)


GetCellBackColor取得某单元被单独指定的、或根据DisplayMask计算出来的背景色
参数1行号
参数2列名或列号,建议采用列名
返回值颜色串


SetCellBackColor单独指定某单元的背景色  
参数1行号
参数2列名或列号,建议采用列名
参数3颜色串,空串表示解除背景色
返回值(无)


GetCellTextColor取得某单元被单独指定的、或根据DisplayMask计算出来的文字色
参数1行号
参数2列名或列号,建议采用列名
返回值颜色串


SetCellTextColor单独指定某单元的文字色  
参数1行号
参数2列名或列号,建议采用列名
参数3颜色串,空串表示解除文字色
返回值(无)


GetCellAlign取得某单元被单独指定的文字对齐,如果尚未被指定,则返回该列的默认对齐
参数1行号
参数2列名或列号,建议采用列名
返回值left / center / right


SetCellAlign单独指定某单元的文字水平对齐
参数1行号
参数2列名或列号,建议采用列名
参数3left / center / right
返回值(无)


GetCellVAlign取得某单元的文字垂直对齐
参数1行号
参数2列名或列号,建议采用列名
返回值top / middle / bottom


SetCellVAlign单独指定某单元的文字垂直对齐
参数1行号
参数2列名或列号,建议采用列名
参数3top / middle / bottom
返回值(无)


GetCellFontIndex取得某单元被单独指定的字体、或默认的字体(如果没有被单独指定),也可以写成GetCellFont
参数1行号
参数2列名或列号,建议采用列名
返回值序号,即 <Fonts> 下的字体顺序号


SetCellFontIndex单独指定某单元的字体序号,其等级高于默认字体,也可以写成SetCellFont  
参数1行号
参数2列名或列号,建议采用列名
参数3序号,即 <Fonts> 下的字体顺序号,-1表示解除字体
返回值(无)


GetCellHyperLink取得某单元是否超链接
参数1行号
参数2列名或列号,建议采用列名
返回值1/0


SetCellHyperLink单独指定某单元是否为超链接,其等级高于 <Col> 的isHyperLink规定
参数1行号
参数2列名或列号,建议采用列名
参数3true/false
返回值(无)


GetCellTip取得某单元的Tip, Tip的含义为: 鼠标划过时,浮现的黄色文字注释
参数1行号
参数2列名或列号,建议采用列名
返回值


SetCellTip单独指定某单元的Tip, Tip的含义为: 鼠标划过时,浮现的黄色文字注释
参数1行号
参数2列名或列号,建议采用列名
参数3
返回值(无)


GetCellLeftImage
GetCellRightImage
取得某单元的左侧/右侧小图标
参数1行号
参数2列名或列号,建议采用列名
返回值图标的URL


SetCellLeftImage
SetCellRightImage
单独指定某单元的左侧/右侧小图标,优先级高于displayMask指定的图标
参数1行号
参数2列名或列号,建议采用列名
参数3图标的URL
返回值(无)


SetCellProp设置某单元格的自定义属性和它的值,每个单元格允许有多个这样的名-值对,其目的是方便程序员的编程设计,Treelist控件不对其语义作任何解析
参数1行号
参数2列名或列号,建议采用列名
参数3属性名,任意串
参数4该属性的值,任意串
返回值(无)


GetCellProp取得某单元格的自定义属性的值,每个单元格允许有多个这样的名-值对,其目的是方便程序员的编程设计,Treelist控件不对其语义作任何解析
参数1行号
参数2列名或列号,建议采用列名
参数3属性名,任意串
返回值串,为该属性的值


GetCellProps取得某单元格的所有自定义属性
参数1行号
参数2列名或列号,建议采用列名
返回值串,以逗号分隔的属性名


MergeSame(用途1)合并某行给定范围内相同内容的单元格  
参数格式为:row=[?];col1=[?];col2=[?];isIgnoreNull=[?];isDemergeFirst=[?],含义为:
row - 某行的行号
col1 - 开始列名或列号,建议采用列名,默认是0
col2 - 结束列名或列号,建议采用列名,默认是最后列
isIgnoreNull - 内容为空是否就不合并了,true/false,默认是true
isDemergeFirst - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true
isKeepMergeAsPossible - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效
返回值(无)
备注1.以树展现时,合并无效; 2.合并只改变外观,并不影响各自单元格的数据;


MergeSame(用途2)合并某列给定范围内相同内容的单元格  
参数格式为:col=[?];row1=[?];row2=[?];isIgnoreNull=[?];isDemergeFirst=[?],含义为:
col - 列名或列号,建议采用列名
row1 - 开始行的行号,默认是0
row2 - 结束行的行号,默认是最后行
isIgnoreNull - 内容为空是否就不合并了,true/false,默认是true
isDemergeFirst - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true
isKeepMergeAsPossible - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效
返回值(无)
备注1.以树展现时,合并无效; 2.合并只改变外观,并不影响各自单元格的数据;


MergeSame(用途3)多个列按大类、小类方式, 跨行合并相同内容的单元格
参数格式为:col=[?];row1=[?];row2=[?];isIgnoreNull=[?];isDemergeFirst=[?],含义为:
col - 多个列名, 以逗号分隔;这些列通常是按顺序已经排序了的
row1 - 开始行的行号,默认是0
row2 - 结束行的行号,默认是最后行
isIgnoreNull - 内容为空是否就不合并了,true/false,默认是true
isDemergeFirst - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true
isKeepMergeAsPossible - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效
返回值(无)
备注1.以树展现时,合并无效; 2.合并只改变外观,并不影响各自单元格的数据;
示例AF.func("MergeSame", "col = Category,summary,customer");


Merge合并指定范围内的单元格
参数1开始行号
参数2开始列名或列号,建议采用列名
参数3结束行号
参数4结束列名或列号,建议采用列名
返回值(无)
备注1.参数之间也可以用逗号分隔;
2.以树展现时,合并无效;
3.合并只改变外观,并不影响各自单元格的数据;
示例AF.func("merge", "0 \r\n id \r\n 10 \r\n city");


DeMerge解除单元格的合并
参数1可选,开始行号
参数2可选,开始列名或列号,建议采用列名
参数3可选,结束行号
参数4可选,结束列名或列号,建议采用列名
返回值(无)
备注1.如果没有参数,表示解除Treelist所有合并;
2.如果只有前2个参数,表示解除覆盖了该单元的合并;
3.参数之间也可以用逗号分隔;
4.以树展现时,合并功能无效
示例AF.func("demerge", "0 \r\n id");


GetCellStatus取得某单元格的状态
参数1行号
参数2列名或列号,建议采用列名
返回值A - 普通单元格;
H - 被合并;
M - 被合并,但位于合并区的左上角,是有效的主单元格;
空串 - 该单元格不存在
备注以树展现时,合并功能无效


GetMainCell取得某单元格所在的合并区域中的主单元格(即左上角单元格)
参数1行号
参数2列名或列号,建议采用列名
返回值诸如"10,3"格式的串,表示“行号,列号”。如果本单元格没有被合并,则返回它自己
备注以树展现时,合并功能无效


GetMergedCells取得覆盖了某个单元格的合并范围
参数1行号
参数2列名或列号,建议采用列名
返回值诸如"10,3,20,3"格式的串,表示“开始行号,开始列号,结束行号,结束列号”
备注以树展现时,合并功能无效


CopyCellDataByMerge将主单元格的数据复制给被合并的各个单元格, 换句话说:所有被合并的单元格的数据,从各自的主单元格(即左上角单元格)中去复制
参数1可选,开始行号
参数2可选,开始列名或列号,建议采用列名
参数3可选,结束行号
参数4可选,结束列名或列号,建议采用列名
返回值(无)
备注该函数一般用于提交前,因为用户如果修改了主单元格,被合并的单元格数据并不会自动跟着变


IsTreeNodeRow是否树节点行(即树杈行)
参数行号
返回值1/0 - 是/否


GetTreeLevel(用途一)取得某行在树中的层次级别,从0开始计数
参数行号
返回值大于等于0的数字


GetParentRow取得某行的父节点所在行
参数行号
返回值行号, -1表示失败,原因有:行号无效、已经是顶级、当前不是以树展现


GetChildRow取得某行的第一个儿子
参数行号
返回值行号, -1表示失败,原因有:行号无效、已经是末级、当前不是以树展现


GetChildRows取得某行的所有儿子 (不包括孙子)
参数行号
返回值以逗号分隔的行号, 空串表示该行没有儿子


GetNextSibling取得某行的下一个或前一个同级(即同辈、兄弟)的行
参数行号
参数可选, true/false, 表示下一个兄弟/前一个兄弟, 默认是 true
返回值行号, -1表示失败,原因有:行号无效、已经是同辈中最后的一个(父亲的小儿子)、当前不是以树展现


SetTreeImage更改树的图标, 也可写成 SetTreeIcon
参数1行号
参数2图片文件URL,合拢时的图标
参数3可选,图片文件URL,展开时的图标
返回值(无)
备注仅对单列多层树有效


GetTreeImage取得树的图标, 也可写成 GetTreeIcon
参数行号
返回值URL,如果有不止一个图片(合拢和展开),则以回车分隔
备注仅对单列多层树有效


Expand(用法1)展开树节点
参数1行号(从0开始计数),如果为空或为 -1,表示展开所有节点
参数2可选,true/false, 表示是否展开其子孙的节点。如果参数1为空或-1, 默认是true, 否则默认值是false
返回值(无)
示例AF.func("expand", "-1 \r\n true"); //展开所有的节点
AF.func("expand", "-1 \r\n false"); //仅展开第一层的所有节点
AF.func("expand", "0 \r\n true"); //展开第一行,包括它的所有子孙节点
AF.func("expand", "0 \r\n false"); //展开第一行,但不包括它的子孙节点


Expand(用法2)展开树的前 n 层节点
参数固定的"Level" + 数字,表示展开前 n 层,例如"Level1"、"Level2"
返回值(无)
示例AF.func("expand", "Level1"); //展开第一层


Collapse收拢树节点
参数可选,行号,如果为空或为 -1,表示收拢所有节点
返回值(无)


IsExpand树节点是否已展开
参数行号
返回值1/0 - 是/否


DeleteChild删除某行下的所有子孙行
参数1行号
参数2可选, 格式为 cacheKey=[true/false], 选项的含义为:
cacheKey(或 isCacheKey) - 是否将删除行的Key存入删除缓冲区(用于提交),默认是true
返回值被删除的总行数


IsLazyloadRow某行是否Lazyload行
参数行号
返回值1/0 - 是/否
备注用于单列多层树、以Lazyload方式加载数据的场景


RebuildTreeCombine重新整理 TreeCombine 的父节点的 Checkbox
参数(无)
返回值(无)
备注用于 TreeCombine 包含了 "auto" 的树


RebuildPid重新整理 treeformat=byPid 的单列多层树的树杈树叶
参数(无)
返回值1/0 - 成功/失败,失败原因为非byPid树
备注用于 pid 和 id 字段被手工修改后、需要重新整理树的排列的情况


ClearLazyload强制设定某Lazyload行没有子孙
参数行号
返回值(无)
备注用于单列多层树、以Lazyload方式加载数据的场景


GetCurrentRow (方式一)取得当前选中的行
参数(无)
返回值行号,空串表示没有当前行;如果有多行,行号之间以逗号分隔


GetCurrentRow (方式二)取得当前选中的行
参数顺序号,从0开始,依次取得第几个选中行,直到返回空串
返回值行号,空串表示没有当前行


GetCurrentRows取得当前选中行的数量
参数(无)
返回值数量


IsRowSelected某行是否被选中
参数行号
返回值1/0 - 是/否


GetCurrentCell用于取得当 curSelMode=“excel” 时当前选中的单元格范围,因为此时选中的单元格是一个区域
参数如果为串 “ColName”,表示返回的列是用列名,否则用列号,默认是列号
返回值以逗号分隔的4个值:开始行号, 开始列号或列名,结束行号, 结束列号或列名
示例var s = AF.func("GetCurrentCells", ""); //返回串可能为 "3,5,4,6"
var s = AF.func("GetCurrentCells", "ColName"); //返回串可能为 "3,dept,4,price"


SelectRow选定当前行
参数1行号
参数2可选,true/false - 允许动画方式定位/禁止动画, 默认false
返回值(无)
备注1.在可多选(curselmode = rows)的情况下,可以有多个参数,分别表示其它各个选中行;
2.如果行号无效,原当前行将失去当前标记;
3.本函数同时也让控件获得了焦点 (即SetFocus)


SelectCell选定当前行、并让某个单元格立即进入编辑状态  
参数1行号
参数2列名或列号,建议采用列名
参数3可选,true/false - 允许动画方式定位/禁止动画, 默认false
返回值(无)
备注1.如果行列号无效,原当前行将失去当前标记;
2.本函数同时也让控件获得了焦点 (即SetFocus)


CloseDropdown收起当前正处于下拉状态的树列表
参数(无)
返回值已成功收起的行号、列名,以逗号分隔。空串表示当前没有处于下拉状态的树列表.


CloseEdit结束当前单元格的输入状态
参数可选,true/false - 将输入框中的内容存入单元格/忽略输入框中的内容, 默认true
返回值已成功关闭的行号、列名,以逗号分隔。空串表示当前不在输入状态.


LockCurrent锁定当前行,使之无法被切换,当前行内的单元格默认是无法被修改的、右键菜单是屏蔽的.
参数可选, 可以是如下串的组合,以逗号分隔:
edit - 当前行内的单元格允许被修改
button - 当前行内的按钮、Radio、Checkbox允许被点击
hyper(或 hyperLink) - 当前行内的超链接允许被点击
menu - 允许右键菜单;
返回值(无)
示例AF.func("LockCurrent", "edit"); //锁定当前行, 但允许本行内容被修改


UnlockCurrent解除锁定当前行
参数(无)
返回值(无)


InsertRows(语法一)插入行
参数1插入处行号(从0开始,-1表示从末尾添加)
参数4可选, 选项子句,语法为:
rows=[?]; isBefore=[true/false]; raiseEvent=[true/false];selectRow=[true/false];openEdit=[true/false];asChild=[true/false];autoId=[true/false], 各选项的含义为:
rows(或 count) - 行数,默认是 1;
isBefore - 前插或后插,默认是true;
raiseEvent(或 isRaiseEvent) - 是否触发 rowsInserted 事件,默认是false
selectRow(或 isSelectRow) - 是否将当前行切换成新插入行,默认是true
openEdit(或 isOpenEdit) - 是否继续直接打开输入框,默认是true
autoId - 如果该列的 <col> 定义了 autoId, 那么是否自动生成唯一值, 默认是true;
asFirstChild - 后插的行是否作为第一个儿子,默认是false;
asLastChild - 后插的行是否作为最后一个儿子,默认是false;
备注:asFirstChild, asLastChild 不能同时为true,并且仅用于 treeFormat="format=byId; autoid=true" 或 "format=bypid"、"format=bydata"的单列多层树、在后插入1行的情况;
返回值新增行的行号,空串表示失败
备注当以树显示时,插入的新行是插入处所在行(即参数1)的同级
示例AF.func("insertRows", -1); //后端添加一行
AF.func("insertRows", "0 \r\n count=4; isBefore=false; raiseEvent=true;SelectRow=false");


InsertRows(语法二)插入行 (过时的语法)
参数1插入处行号(从0开始,-1表示从末尾添加)
参数2可选, 插入行数,默认1
参数3可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插
参数4可选, 选项子句,语法为:
raiseEvent=[true/false];selectRow=[true/false];openEdit=[true/false];asChild=[true/false];autoId=[true/false], 各选项的含义同语法一.
返回值同语法一


InsertCol插入列  
参数1插入处列号(从0开始,-1表示从末尾添加)
参数2列的参数,例如"name=price;title=项目名称;width=100",列属性可参考《Treelist XML文档规范》之Cols\col;
返回值新增列的列号,空串表示失败


DeleteRows (方式一)删除行  
参数1开始删除的行号
参数2行数,-1表示删除后面所有行
参数3可选, 选项子句,语法为:
raiseEvent=[true/false];cacheKey=[true/false];withChild=[true/false], 各选项的含义为:
raiseEvent(或 isRaiseEvent) - 是否触发 rowsDeleted 事件,默认是false
cacheKey(或 isCacheKey) - 是否将删除行的Key存入删除缓冲区(用于提交),默认是true
withChild(或 withChildren) - 当以树显示时,是否将其子孙行也删除,默认是false
返回值(无)


DeleteRows (方式二)删除行  
参数1表达式。满足表达式的行均会被删除
参数2可选, 选项子句,语法为:
raiseEvent=[true/false];cacheKey=[true/false];withChild=[true/false], 各选项的含义为:
raiseEvent(或 isRaiseEvent) - 是否触发 rowsDeleted 事件,默认是false
cacheKey(或 isCacheKey) - 是否将删除行的Key存入删除缓冲区(用于提交),默认是true
withChild(或 withChildren) - 当以树显示时,是否将其子孙行也删除,默认是false
返回值(无)
示例AF.func("deleteRows", "price>100 and toUpperCase(left(ProdId,2))='KS' \r\n cacheKey=true");


DeleteCurrentRow删除当前行
参数可选, 选项子句,语法为:
raiseEvent=[true/false];cacheKey=[true/false];withChild=[true/false], 各选项的含义为:
raiseEvent(或 isRaiseEvent) - 是否触发 rowsDeleted 事件,默认是false
cacheKey(或 isCacheKey) - 是否将删除行的Key存入删除缓冲区(用于提交),默认是true
withChild(或 withChildren) - 当以树显示时,是否将其子孙行也删除,默认是false
返回值(无)
备注如果当前行允许多选,那么可能有多行


CopyCurrentRow将当前行拷贝入操作系统的剪帖板
参数可选,可包含如下属性子句:content=[asData/asDisplay];inIncludeHide=[true/false],含义为:
content - 内容,asData表示纯数据,asDisplay表示显示的内容,默认是asData;
includeHide (或isIncludeHide) - 是否包含隐藏行或隐藏列,默认是false;
返回值(无)
备注如果有多个当前行(多选),那么所有选中行内容都将被复制


PasteCurrentRow将操作系统剪帖板内容粘帖到当前行
参数(无)
返回值(无)
备注如果有多个当前行(多选),那么所有选中行内容都将被粘帖


PasteNewRow将操作系统剪帖板内容粘帖到新增行
参数(无)
返回值(无)


MoveCol移动某列的位置  
参数1列名或列号,建议采用列名
参数2目标列的列名或列号,建议采用列名
参数3可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插
返回值新的位置, -1失败


MoveRow移动某行的位置
参数1行号
参数2目标行的行号
参数3可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插
返回值新的位置, -1失败


GetNextValidRow遍历行,用于需要自动跨越隐藏行、树杈行(多列多层树)、小计行、合计行的情形  
参数1开始行, 如果是从头遍历,参数应该为空串或“-1”
参数2可选, 1 / -1 表示 正向/反向遍历, 默认是1
返回值行号,空串表示遍历完毕


GetNextValidCol遍历列,用于需要自动跨越多列多层树的首列的情形  
参数开始列的列名, 如果是从头遍历,参数应该为空串
返回值列名,空串表示遍历完毕
示例for(var col=AF.func("GetNextValidCol", ""); col!=""; col=AF.func("GetNextValidCol", col)) {
...
}


GetNextVisibleCol遍历可视列,用于需要自动跨越隐藏列、树的首列的情形
参数开始列的列名, 如果是从头遍历,参数应该为空串
返回值列名,空串表示遍历完毕
示例for(var col=AF.func("GetNextVisibleCol", ""); col!=""; col=AF.func("GetNextVisibleCol", col)) {
...
}


IsTotalRow是否合计行,通常合计行只有一行,且位于最后
参数行号(从0开始计数)
返回值1 - 是,0 - 否


IsSubTotalRow是否小计行
参数行号
返回值1 - 是,0 - 否


GetTreeLevel(用途二)取得某小计行的分类层次级别,从1开始计数
参数行号
返回值如果此行不是小计行,返回0,否则返回大于0的数字,其含义是分类的层次,最外层是1


GetRowKey取得某行的Key(即键值)
参数1行号
参数2可选,复合主键的分隔符,默认逗号(,)
参数3可选, 0或1, 1表示取被修改前的原始内容, 默认是0
返回值Key串


GetRowEditAble某行是否能修改
参数行号
返回值1 - 是,0 - 否


GetColEditAble某列是否能修改
参数列名
返回值1 - 是,0 - 否


SetRowEditAble置某行能否修改
参数1行号
参数2true/false(或1/0、yes/no)
返回值(无)
备注通常是 <Properties> 中的 editable 为 true 的情况下, 本函数才有意义


SetColEditAble置某列能否修改
参数1列名
参数2true/false(或1/0、yes/no)
返回值(无)
备注通常是 <Properties> 中的 editable 为 true 的情况下, 本函数才有意义


GetColName取得列名
参数列号
返回值串, 空串表示列号已经超出范围了


GetColTitle取得列标题  
参数列号,或列名
返回值


SetRowDeleteAble单独指定某行是否允许被删除(仅限于右键菜单)
参数1行号
参数2true/false
返回值(无)


GetRowDeleteAble取得某行是否允许删除
参数行号
返回值1 / 0 - 允许/不允许


GetRowBackColor取得某行被单独指定的背景色
参数行号
返回值颜色串,空串表示该行尚未被单独指定背景色


SetRowBackColor单独指定某行的背景色
参数1行号
参数2颜色串,空串表示解除背景色
返回值(无)


GetRowTextColor取得某行被单独指定的文字色
参数行号
返回值颜色串,空串表示该行尚未被单独指定文字色


SetRowTextColor单独指定某行的文字色
参数1行号
参数2颜色串,空串表示解除文字色
返回值(无)


GetRowEnable某行是否Enable,disable的行以灰色(或删除线)显示、不可编辑、不触发Clicked和DblClicked事件、不可拖拽  
参数行号
返回值1/0/空串 - 是/否/无效行号


SetRowEnable置某行为Enable或disable,disable的行以灰色(或删除线)显示、不可编辑、不触发Clicked事件  
参数1行号
参数2true/false(或1/0、yes/no) - 表示enable/disable
返回值(无)


IsRowHide或GetRowHide,某行是否隐藏
参数行号
返回值1/0/空串 - 隐藏/显示/无效行号


HideRow隐藏某行
参数1行号
参数2true/false - 隐藏/显示
返回值(无)


IsColHide或GetColHide,某列是否隐藏,等同GetColProp(colname, "isHide")
参数列名
返回值1/0/空串 - 隐藏/显示/无效列名


HideCol隐藏某列,等同SetColProp(colname, "isHide", 1/0)
参数1列名
参数2true/false - 隐藏/显示
返回值(无)


GetColCheckState取得isCheckboxOnly列标题处的CheckBox的状态
参数列名或列号,建议采用列名
返回值1/0 - 已选中/未选中


SetColCheckState设置isCheckboxOnly列标题处的CheckBox的状态
参数1列名或列号,建议采用列名
参数21/0 - 已选中/未选中
返回值(无)
备注仅修改选中状态,并不改动数据. 如果要修改整列的数据,请执行 SetColCellData 函数


GetColGroup取得某列所属的分组(Group)
参数1列名或列号,建议采用列名
参数2top/all - 仅返回顶层分组名/返回所有分组名,默认是 top
返回值所属Group的名称,如果有多层分组,则以逗号分隔


EnsureVisible保证让某个单元格或某行在屏幕中可见
参数1行号
参数2可选, 列名, 如果为空表示仅定位行
参数3可选,true/false - 允许动画方式定位/禁止动画, 默认false
返回值(无)


Find按表达式查找,并返回首个符合条件的行号
参数1表达式(可参见“公共内容\表达式”)
参数2可选, 格式为startRow=[行号];content=[asData/asDisplay];isReverse=[?], 其含义为:
startRow - 开始的行号,默认是0;
content - 为 asData 或 asDispplay,默认是asData, 表示搜索的内容是值还是显示的文字(例如下拉的值和显示文字是不一样的);
isReverse - 为 true/false, 表示正向搜索 / 逆向搜索,默认是false;
返回值行号,-1表示未能找到匹配的行


FindAll按表达式查找,并返回符合条件的所有行号
参数1表达式(可参见“公共内容\表达式”)
参数2可选, 格式为 content=[asData/asDisplay], 其含义为:
content - 为 asData 或 asDispplay,默认是asData, 表示搜索的内容是值还是显示的文字(例如下拉的值和显示文字是不一样的).
返回值从小到大排列的行号串,行号之间以逗号分隔,空串表示未能找到匹配的行
示例var s=AF.func("findAll", "price<20 and if(len(ProcId)==0, 1, 0)");


FindByKey按键值搜索
参数1键值
参数2可选,表示复合主键之间的分隔符,默认是逗号
返回值行号,-1表示未找到


GetUnique取得某列(或多列)的唯一的值的数组
参数1列名, 也允许以加号(+)分隔的多个列
参数2可选, 格式为 CaseSensitive=[?];Sort=[?], 其含义为:
CaseSensitive - 大小写是否敏感, true或false, 默认是true;
Sort - 是否对结果进行排序, "none"表示不排序; "string"表示按照字符串方式排序; "number"表示按照数值大小排序, 默认是"none";
(注:如果 sort=number, 则该列必须为数值列、且只能是单个列
返回值以回车符分隔的值串
示例var s=AF.func("GetUnique", "price \r\n Sort=Number");
var s=AF.func("GetUnique", "ID+Name \r\n CaseSensitive=0");


Filter对已加载的数据进行过滤,只显示满足条件的行  
参数1表达式(可参见“公共内容\表达式”)
参数2可选,格式为 droplistCol=[?]; content=[asData/asDisplay], 其含义为:
droplistCol - , 列名,表示仅对该列的下拉TreeList的内容进行过滤;
content - 为 asData 或 asDispplay,默认是asData, 表示搜索的内容是值还是显示的文字(例如下拉的值和显示文字是不一样的).
返回值1 - 成功,0 - 失败,失败原因通常为表达式书写错误
示例AF.func("Filter", "price<20 and if(len(ProcId)==0, 1, 0)");


ApplyFilter对某个下拉列执行过滤,通常用于EditChanged事件中,对多个关联下拉、下拉过滤采用了表达式的某个下拉强制过滤
参数1基准的行号,例如在EditChanged事件中,行号就是 p1 参数
参数2下拉列的列名
返回值
示例AF.func("ApplyFilter", p1 + "\r\n cityId");


EnableDrag使2个Treelist之间能够用鼠标拖拉(Drag)行  
参数另一个TreeList的句柄(句柄可通过GetHandle()取得)
返回值1 - 成功


DisableDrag终止2个Treelist之间的行拖拉
参数另一个TreeList的句柄(句柄可通过GetHandle()取得)
返回值1 - 成功


Copy将某单元格/某行/某区块内容复制进内存剪切板
参数1开始行号
参数2开始列名或列号,建议采用列名
参数3可选,结束行号,默认等于开始行号
参数4可选,结束列名或列号,建议采用列名,-1表示最后列,默认值是-1
参数5可选,可包含如下属性子句:content=[asData/asDisplay];isIncludeTotalRow=[true/false];inIncludeHide=[true/false],含义为:
content - 内容,asData表示纯数据,asDisplay表示显示的内容,默认是asData;
includeTotalRow (或isIncludeTotalRow) - 是否包含合计/小计行,默认是false;
includeHide (或isIncludeHide) - 是否包含隐藏行或隐藏列,默认是false;
返回值1/0 - 成功/失败
示例AF.func("copy", "3 \r\n 0"); //复制第四行整行
AF.func("copy", "3 \r\n orderid \r\n 5 \r\n price \r\n content=asDisplay;includeHide=true"); //复制一个区块


ScrollToRow窗口滚动到某行
参数行号, 表示滚动到的首个可见行
返回值(无)
备注请参见函数 GetScrollRow


GetScrollRow取得窗口首个可见行
参数(无)
返回值行号
备注请参见函数 ScrollToRow


Validate验证输入的内容
参数可选, 可以有如下的选项,相互以分号分隔:
isReturnText - true/false, true 表示未通过验证时返回错误文字串, 不浮现错误提示窗; false 表示将当前单元格切换到未通过验证的单元格, 并自动浮现出错误提示, 默认是 false;
startRow - 开始行,默认是0;
endRow - 结束行,默认是-1,-1表示最后行;
isValidateKey - 是否需要在校验Key(例如key重复),默认是True;
includeCol / excludeCol - 仅包含某些列/不包含某些列,二者可选其一,表示列的范围. 列名之间以逗号分隔。默认是空串,表示验证所有列;
  备注1:这个“范围”是指验证的范围,以及限定NMD中“M”的识别范围.
  备注2:Key以及Key的验证和这个“范围”无关.
返回值如果 isReturnText 参数为 false, 返回 1 或 0, 分别表示通过验证、未通过验证.
如果 isReturnText 参数为 true, 验证通过时返回空串, 未通过时则返回这种 json 串:
    {"row":3, "col":"price", "errorType":"key", "errorText":"价格未输入!"}
其中 row 和 col 表示错误处的行列, errorType 是未通过的验证类型, 有 key, unique, nullable, validation 四种
备注1.验证范围为 notNull、isUnique,以及 <Validations> 中的内容;
2.一般不需要调用这个函数,因为函数GetChangedXML( )本身就包含了验证过程.
示例AF.func("Validate", "isValidateKey=false");


GetChangedXML调用Validate( )验证,并生成用于提交的XML/JSON大串, XML/JSON格式规范请参见 "XML提交格式规范".   
参数可选, 可以有如下的选项,相互以分号分隔:
level - 级别号,可以是0(默认)、1、2、3,其含义分别为:
  0 - 级别0,生成当前全部、最新内容(不包括修改前的原始内容);
  1 - 级别1,仅生成被修改过的单元格的内容(包括原始内容);
  2 - 级别2,在级别1的基础上,增加被修改过单元的整行内容;
  3 - 级别3,内容包含所有行、所有列、修改前后的内容;
isIgnoreChange - true/false, 仅用于Level=0. true表示不管内容是否被修改过,始终生成XML; false表示除非内容被修改过,否则返回空串. 默认是false;
returnFormat - 本函数返回串的格式, xml/json, 默认是xml;
startRow - 开始行,默认是0;
endRow - 结束行,默认是-1,-1表示最后行;
DateFormat - 日期的格式,默认是'%Y.%m.%d',可参见公共内容中now( )函数的参数;
DateTimeFormat - 日期时间的格式,默认是'%Y.%m.%d %H:%M:%S',可参见公共内容中now( )函数;的参数
isValidateKey - 是否需要在客户端校验Key(如key重复),默认是True;
isExecuteValidations - 是否自动执行XML描述文件的 <Validations> 中的验证,默认是true.
isNeedDeleteDetail - 删除行的XML节点, 除了Key以外, 是否还需要包含该行的全部原始内容,默认是False,用于级别1、2、3;
includeCol / excludeCol - 仅包含某些列/不包含某些列,二者可选其一,表示列的范围. 列名之间以逗号分隔。默认是空串,表示提交所有列;
absIncludeCol - 始终包含某些列,不管其列数据有没有被修改过,并且在删除行的XML节点中也包含这些列的内容. 仅用于Level=1;
  备注1:这个“范围”是指提交、验证的范围,以及限定NMD中“M”的识别范围.
  备注2:Key以及Key的验证和这个“范围”无关.
CompKeySep - 复合主键的分隔符,默认逗号分隔;
返回值XML/JSON大串 - 成功;
空串 - 内容尚未被修改;
0 - 失败(原因为未通过客户端验证, 如notNull、isUnique)
备注1.XML描述文件的 <Properties> 中必须定义Key;
2.如果包含了开始行和结束行参数,生成的XML中将不包括被删除行的信息
示例//取得级别为0、复合主键无分隔符的XML提交串,且不校验Key是否重复
AF.func("GetChangedXML", "level=0; CompKeySep=;isValidateKey=false");
//取得级别为1、不校验Key重复、仅包含3个字段的XML提交串
AF.func("GetChangedXML", "level=1; isValidateKey=false; includeCol=id,price,custid");


GetRowChanged取得某行或整表的修改状态
参数1行号. 如果为 -1,表示所有行,即整个表.
参数2可选, 状态掩码,为字母 N、M、D 的组合(简称“ni-ma-的”):
N - 表示有新增行;
M - 表示有修改过的行;
D - 表示有删除行(仅用于整表)
默认值为 NM 或 NMD(如果是整表)
返回值为上述3个字母的组合,空串表示未符合掩码
示例AF.func("GetRowChanged", "-1\r\n ND");  //可能返回N、D、ND、空串
AF.func("GetRowChanged", "30");  //可能返回N、M、NM、空串


SetAsNewRow修改某行的“新增行”状态(和GetRowChanged的 "N" 相关),它影响GetChangedXML( )的执行结果
参数1行号, 也可以是逗号分隔的多个行号、减号分隔的行号范围
参数2可选,true/false,默认true
返回值(无)
示例AF.func("SetAsNewRow", "2 \r\n true");
AF.func("SetAsNewRow", "3,5,7-11,13-22 \r\n true");


GetCellChanged取得某单元格是否被修改过
参数1行号
参数2列名或列号,建议采用列名
返回值M - 被修改过,空串:未改过


SetCellChanged强制更改某单元格的修改状态
参数1行号
参数2列名或列号,建议采用列名
参数3M - 将原始缓存数据修改成和当前不一样的内容; 空串 - 用当前内容替换原始缓存数据, 即清除修改状态
返回值(无)


SetColCellChanged强制更改所有行、某列的单元格的修改状态
参数1列名或列号,建议采用列名
参数2M - 将原始缓存数据修改成和当前不一样的内容; 空串 - 用当前内容替换原始缓存数据, 即清除修改状态
返回值(无)


ResetChanged合并修改内容,清除行和单元格的修改标记(即 "NMD" 状态),以避免重复提交.  
参数1可选,表示开始行,默认是0
参数2可选,表示结束行,默认是-1, -1表示末行
参数3可选,是多个"名=值"对选项,以分号分隔:
includeCol/excludeCol - 仅包括某些列/仅排除某些列,二者只能选其一, 列名之间以逗号分隔. 默认为空,表示包含全部列;
resetDelete - true/false, true表示清空删除行的缓存,默认是true, 该选项和开始行、结束行无关;
resetNew - true/false, true表示清除新增行的“新增”标志,默认是true, 该选项和开始行、结束行有关;
返回值(无)
示例//清除所有修改标记;
AF.func("resetchanged", "");
//仅清除某单元格的"M"标志;
AF.func("resetchanged", "3\r\n3\r\n includeCol=id; resetDelete=false; resetNew=false");
//清除所有行中除了3个列以外的"M"标志, 并清除删除行缓存("D");
AF.func("resetchanged", "0\r\n-1\r\n excludeCol=id,orgNo,flag; resetDelete=true; resetNew=false");


GetDeleteRows或 GetDeletedRows,取得被删除的总行数.
参数(无)
返回值被删除的总行数
备注删除区并不缓存新插入的行.


GetDeleteKey或 GetDeletedKey,取得被删除的行中某行的Key.
参数序号,空串表示取得所有被删行的Key
返回值Key值,如果是多个行,则以逗号分隔
备注删除区并不缓存新插入的行.


UnDelete恢复被删除的行
参数以逗号分隔的Key值,空串表示恢复所有被删行
返回值恢复的总行数
备注1.被恢复的行将位于表格末尾处;
2.删除区并不缓存新插入的行.


EnableUndo启用Undo/Redo功能  
参数(无)
返回值1/0 - 成功/失败


IsUndoEnabledUndo/Redo功能是否已启用
参数(无)
返回值1/0 - 是/否


Undo执行Undo操作  
参数(无)
返回值(无)


Redo执行Redo操作  
参数(无)
返回值(无)


SaveUndo将当前状态保存到 Undo 缓存,
参数(无)
返回值(无)
备注凡是涉及到对树列表的更改数据的交互操作, 系统都是自动保存Undo状态的, 但调用API函数更改数据时 (例如 SetCellData) 是不自动保存Undo状态. 本函数通常用于 js 更改数据前,


UndoAble当前是否有Undo可操作  
参数(无)
返回值1/0 - 是/否


RedoAble当前是否有Redo可操作  
参数(无)
返回值1/0 - 是/否


ResetUndo清空Undo缓存,相当于重置Undo
参数(无)
返回值(无)


GetCustom取得当前Treelist的外观状态XML串用于上传,使操作者可定制外观  
参数(无)
返回值XML串


SetCustom应用原先已保存(上传)的外观状态XML串, 通常需要在 Build( ) 后立即执行  
参数XML串
返回值(无)


AddMenu增加自定义的弹出菜单项  
参数1串、XML串,或URL,内容的格式规范请参考Treelist的帮助文档“13.自定义菜单”
参数2可选,格式为LocateAt=[top/bottom], 表示自定义菜单在弹出时位于顶部还是底部,默认是bottom
返回值(无)
备注只能在OnEvent(id, "MenuBeforePopup", ...)事件中执行。


EnableMenu配置内置的右键菜单项,使之能显示
参数1固定的菜单项名称,以逗号分隔,含义为:
copy - 复制      paste - 粘贴        pasteNewRow - 粘贴到新行
delete - 删除     deleteMore - 删除更多   insert - 插入
print - 打印预览    addSort - 加入多重排序   selectCol - 自定义显示隐藏列
export - 转换输出   import - 导入Excel文件  curselMode - 焦点选取方式
separate - 分屏冻结  enter - 回车键行为     expandTree - 展开/合拢树
showRuler - 显示/隐藏左标尺            displayAs - 以列表/树展现
exportAll - 转换输出全部页(用于分页显示时)     printAll - 打印全部页(用于分页显示时)
hue - 色调      language - 语言切换
参数2可选, true - 仅对参数1的菜单项生效; false - 仅显示参数1的菜单项,其余的统统不显示.
默认是true
返回值(无)
备注默认情况下,language、exportAll、printAll是disable的


DisableMenu配置内置的右键菜单项,使之不显示
参数1同上
参数2可选,true/false.
true - 仅对参数1的菜单项生效; false - 仅隐藏参数1的菜单项,其余的统统显示, 默认是true
参数3可选,true/false.
true - 临时性的,仅用于 MenuBeforPopup 事件中, 默认是false
返回值(无)
备注默认情况下,language、exportAll、printAll是disable的


GetExpress取得当前表达式(Expresses)节点的完整XML串
参数(无)
返回值XML串
示例var s = AF.func("GetExpress", "");
alert(AF.func("toJson", s));     //可以用全局函数 toJson 转换成 JSON 串


SetExpress设置当前表达式(Expresses)节点的完整XML串
参数XML/JSON串, 格式须和 GetExpress 返回串类似
返回值(无)
示例var exp = "<expresses>\
<express>total=round(price*num, 2)</express>\
<express>price=round(total/num, 4)</express>\
</expresses>";
AF.func("SetExpress", exp);
AF.func("ReCalc", ""));     //按照新的表达式重新计算


ReCalc重新计算整表的计算关系,如表达式(Expresses)、合计小计
参数(无)
返回值(无)


GetRedrawAble是否能够重画
参数(无)
返回值1 / 0 - 能 / 不能


SetRedrawAble设置让Treelist能够重画或不能重画。为了提高性能,消除不必要的重画,在需要连续对Treelist作改动性操作(比如改数据、改属性)前关闭重画,操作完成后再开启重画.
参数true/false - 能 / 不能
返回值(无)


PrintPreview打印预览
参数(无)
返回值(无)


Print直接打印
参数可选,格式为 isOpenSysDialog=[?]; 其含义和用法如下:
isOpenSysDialog - true/false - 弹出操作系统的打印对话框/不弹出对话框,默认是true;
返回值(无)


Import从本地 Excel 文件导入数据
参数格式为 filename=[?];SheetName=[?];isDeleteFirst=[?];HeaderRows=[?];TailRows=[?]; 列名1=[?]; 列名2=[?]...; 列名n=[?]:
FileName - Excel 文件的全文件名, 后缀须为 xlsx, 或 xls(仅硕正企业版);
SheetNameSheet - 如果是多工作表,需指定的工作表名,否则默认导入第一个工作表;
MappingMode - 列和字段的映射方式,可以是 byContent / byComment / none, 分别表示: 按写在单元格中的字段名或标题自动匹配 / 按设在单元格中的"批注"的字段名自动匹配 / 不自动匹配。默认是None ;
TailRows - Excel 的下方不得导入的行数;
isDeleteFirst - true/false, 是否先删除原先的数据, 默认是false;

如果 MappingMode = None, 还可以进一步选择如下选项:
HeaderRows - Excel 的上方不得导入的行数;
各个列名 - Excel 中各个列的列号, 对应到XML中的列ID。需要逐个列对应过去,如果不指定这个对应关系,则以自然顺序逐个自动对应;
返回值1/0 - 成功/失败
备注1.mappingMode 为 byContent 或 byComment 时,标记所在的单元格往往是Excel的标题单元格,标题单元格所在行是不导入的,是从它们的下一行开始导入的;
2.下面例子中的文件是固定的文件名, 但在实际情况中,往往是用户需要打开文件对话框选择 Excel 文件的,请参考“12.全局函数”中的“其它函数”下的 FileDialog( ) 函数;
示例AF.func("Import", "filename=d:\\表1.xlsx; A=Country; B=PrdId; D=price"); //按指定的列-字段关系导入
AF.func("Import", "filename=d:\\表1.xlsx; mappingMode=byComment"); //按藏在批注中的字段映射关系导入


Export取得XML格式的全部数据,一般用于打印:将串作为数据源转交给Report组件.  
参数1可选,为 asData 或 asDisplay,表示输出内容是纯数据,还是和界面显示的一样串,默认是asDisplay
参数2可选,为行的范围,默认是全部行,格式可以为:
row = 行号,多个行之间以逗号分隔;
startRow = 开始行的行号;
endRow = 结束行的行号(注:不包括结束行);
 或 count = 行数;
返回值XML大串
示例var row=4;
AF.func("Export", "asData \r\n row=" + row);


OpenImportDialog打开从 Excel 文件导入数据的对话框
参数可选串,格式为: filename=[?], 说明如下:
filename - 本地 xlsx 或 xls 文件,必须是全文件名.
如果未指定filename,那么首先会弹出文件选择对话框
返回值如果未导入,返回空串;否则返回以逗号分隔的插入到树列表的开始行、行数
示例AF.func("OpenImportDialog", "");


OpenExportDialog打开转换输出对话框、或直接转换输出
参数可选串,格式为:
type=[?];typeOnly=[?];filename=[?];content=[?];dropdown=[?];includeHide=[?];includeHeader=[?];scale=[?];precision=[?], 其含义说明如下:
type - 首选的文件名后缀,例如xlsx、 jpg、 pdf之类.
filename - 指定文件名.
isEcho - 完成后是否需要提示框提示成功与否.
content - 为asData 或 asDisplay,表示输出内容是纯数据,还是和界面显示的一样串,默认是asData.
dropdown - 为asData、asDisplay 或 asDataAndDisplay,表示下拉内容的输出格式,默认是asData.
includeHide - 为true或false,表示是否包含隐藏列,默认是false.
gridLine - 是否显示表格线,仅用于 xlsx 或 xls.
scale - 图像类文件的打印比例,范围是10 到 400,默认100。对于PDF而言,Scale越大越清晰,例如300表示在300%的显示比例下仍很清晰.
precision - JPG精度,仅对JPG和PDF有效,精度范围1-100(默认85),越接近100越清晰,但文件尺寸越大.
isOpenDialog - 是否需要弹出对话框,默认是true。
  如果打开对话框, 还可以有如下选项:
    typeOnly - 和type类似,表示仅限于该种文件类型.
  如果不弹出对话框,则直接转换输出,还可以有如下参数:
    includeHeader - none/name/title, 表示无列标题/列名/列标题,默认采用上次对话框中所选的内容.
返回值转换输出成功的文件名(含路径的全文件名),空串表示未作转换. 如果有多个文件名,则以回车分隔
示例AF.func("OpenExportDialog", "typeOnly=xlsx;content=asDisplay");
AF.func("OpenExportDialog", "isOpenDialog=false;type=xlsx;filename=d:\\my.xlsx;includeHeader=title");


SetExportFilename指定转换输出的文件名,通常用于 ExportDialog 事件
参数1文件名,可以是带路径的全文件名,也可以不带路径
参数2格式为 isOpenFileDialog=[?], 值可以是true/false, 表示是否打开后面的文件选择对话框,默认是True
返回值
备注如果 isOpenFileDialog=false、且文件名不带路径,那么文件将被生成到 "我的文档" 目录下
示例function OnEvent(id, Event, p1, p2, p3, p4)
{
 if(Event == "ExportDialog" && p1 == "xlsx")
 {
  AF.func("SetExportFilename", "MyDoc.xlsx \r\n isOpenFileDialog=0");
 }
}


OpenDeleteRowsDialog打开删除行对话框
参数(无)
返回值(无)


AddHotKey增设快捷键。快捷键将触发HotKey事件
参数1第一个快捷键,可以是F1至F12、字母、数字、或键的AscII码,也可再加Ctrl、Shift、Alt的组合,以'+'分隔.
参数2可选,第二个快捷键,以此类推.
返回值(无)
备注1.并不是所有键都能用作快捷的,受制于浏览器,您需要逐个测试;
2.快捷键将触发 HotKey 事件
示例AF.func("AddHotKey", "F12 \r\n Ctrl+F4 \r\n Ctrl+Shift+S \r\n Alt+5 \r\n Ctrl+32");
分别表示了5个快捷键:F12、Ctrl+F4、Ctrl+Shift+S、Alt+5、Ctrl+空格(空格的AscII码是32)