9103c744373b427c1ca29b39ec7c7176f6669689.svn-base
70.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
<?xml version='1.0' encoding='utf-8' ?>
<functions>
<category name="初始函数">
<function name="Build">
<usage>创建Treelist</usage>
<detail>根据XML描述文件创建Treelist</detail>
<para>XML所在的URL(相对或绝对),或者直接就是XML大串</para>
<para>可选, 允许是XML中<Properties>下的任何属性,表示将强制采用本属性, 多个属性间以分号(;)分隔,例如 isTree=false;editable=true<br>可见参数2能方便地使单个XML应用于多种场景, 当然也可以调用SetProp( )、SetColProp( )、SetDroplistProp( )动态更改属性</para>
<return>1 - 成功; 空串 - 失败(将自动弹出失败页面)</return>
<example>AF.func("build", "../tr3.xml \r\n isTree=true;editable=true");<br>
AF.func("build", '&lt;?xml version="1.0"?&gt;&lt;TreeList&gt; ...(略) &lt;/TreeList&gt;');
</example>
<illu>提示: 几乎每个演示页都使用了这个函数</illu>
</function>
<function name="Load">
<usage>加载数据</usage>
<detail>加载数据,数据格式可以为XML、JSON、TXT(TSV)</detail>
<para>数据所在的URL(相对或绝对), 或直接的XML/JSON/TXT数据大串;</para>
<para>可选, 格式为 Mode=[?];FillMode=[?];insertAt=[?];asNewRow=[?];Node=[?];GroupSep=[?];FadeInStep=[?];LoadUserProp=[?];Para1=[?];method=[?], 其含义分别为:<br>
<b>mode</b> - 同步/异步模式,如果等于"asynch", 表示异步(多线程)加载,异步加载能改善服务器端响应时间过久而导致的界面滞涩.<br>
<b>FillMode</b> - 数据填充方式, 默认为空(表示先彻底清除原有数据),也可以为:<br>
replaceByOrder - 不增删行,仅逐行替换数据;<br>
replaceByKey - 不增删行,仅按相同Key的行替换数据;<br>
insert - 不清理原有的数据,新数据是插入到表中的;<br>
<b>insertAt</b> - 当fillmode = insert时,用来指定插入位置(行号, 前插), -1表示从末尾添加:<br>
<b>asNewRow</b> - 可以为true/false, 默认false,用于标记加载的行的"N"(新增行标记),用于提交:<br>
<b>Node</b> - 指定XML数据内所在节点名.<br>
<b>GroupSep</b> - 用于当XML/JSON数据中的节点名采用分组表头Group的id时,下属各列的数据分隔符,默认是斜杠("/");<br>
<b>FadeInStep</b> - 屏幕展现时的淡入淡出效果,0至255,数字越小效果越明显,0表示关闭此效果,默认采用<Properties>中的同名属性.<br>
<b>LoadUserProp</b> - true/false, 是否把XML中的附加属性作为单元格的自定义属性一起加载,以便让GetCellProp( )函数能存取。考虑到对性能的影响,默认是false的.<br>
<b>method</b> - http的发送方法,为Get / PostEncodeURI / Post,默认是Get. 如果为PostEncodeURI,则自动将URL中问号(?)后面的部分移到http body中,并对文字作EncodeURI转码处理; 如果是Post,则不作转码处理.<br>
<b>Para1</b> - 可以为data/URL, 表示声明上面的“参数1”是纯数据串还是一个URL,一般用于TXT格式的数据,因为TXT格式的数据有时候很难自动判断到底是数据还是URL。如果不声明,系统优先判断为URL .<br>
备注1:如果是异步加载,那么在本Load( )函数后面不应该再执行针对本Treelist的其它函数,应该在“Load”事件中作后续处理,否则异步将失去意义(<font color=red>非常重要</font>);<br>
备注2:replaceByOrder 和 replaceByKey 不是很常用,加载的数据的列是原Treelist列的子集,用于增量刷新部分列;<br>
备注3:TSV格式数据不支持Node、FillMode、insertAt选项;<br></para>
<return>1 - 成功; 空串 - 失败(将自动弹出失败页面)</return>
<memo>建议该URL返回的XML/JSON数据支持<a href="pub.htm#Tag604" target=_blank>SoapLike</a>异常包</memo>
<example>AF.func("load", "../datacenter/dataprov.aspx?id=11800102");<br>
AF.func("load", "../datacenter/dataprov.aspx?id=11800102 \r\n fillmode=replaceByOrder");<br>
AF.func("load", '{"Record": [{"Country":"Austria","OrderID":"10258","CustomerID":"ERNSH"},{"Country":"Austria","OrderID":"10233","CustomerID":"GROSH"}]}');
</example>
</function>
<function name="Refresh">
<usage>刷新数据</usage>
<para>可选, true/false(默认),true表示如果数据有改动,能弹出对话框询问用户是否刷新.</para>
</function>
</category>
<category name="基本函数">
<function name="GetRows">
<usage>取得行数</usage>
<return>数值</return>
<example>var rows = AF.func("getRows", "");</example>
</function>
<function name="GetCols">
<usage>取得列数</usage>
<return>数值</return>
</function>
<function name="SetProp(用途1)">
<usage>动态更改 Properties 属性</usage>
<detail>动态更改XML文档中 Properties 定义的属性、以及自定义属性</detail>
<para>属性名, 包括Properties中的自定义属性</para>
<para>内容串. 如果是自定义属性,空串表示删除该自定义属性</para>
<example>AF.func("setProp", "sort \r\n ShipCity a, OrderDate d");</example>
<memo>1.更改dataURL属性相当于是调用Load( )函数,其内容可以是绝对或相对URL(相对于XML描述文件),也可以是XML/JSON大串;<br>2.更改sort属性相当于执行了排序操作</memo>
<illu>参见演示页: 7.计算列合计行、19.分页方案(二)、20.提交修改内容、24.动态更改属性</illu>
</function>
<function name="GetProp(用途1)">
<usage>取得 Properties 属性内容</usage>
<detail>取得XML文档中 Properties 的属性内容</detail>
<para>属性名, 包括Properties中的自定义属性</para>
<return>内容</return>
</function>
<function name="GetProp(用途2)">
<usage>取得打印配置属性</usage>
<detail>取得打印配置属性, 即 PrintPage 节点下的全部内容</detail>
<para>固定的串,为 Print 或 PrintPage</para>
<return>XML串</return>
<memo>1.打印属性稍复杂,需要您对XML规范中的 PrintPage 节点进行分析;<br>
2.返回的XML串内容不多,因为默认的设置就不出现在XML中了;<br></memo>
</function>
<function name="SetProp(用途2)">
<usage>设置打印配置属性</usage>
<para>固定的串,为 Print 或 PrintPage</para>
<para>XML串</para>
<memo>更改打印参数,需要借助全局函数中的DOM函数集</memo>
<example>//如下例子是把打印纸的左边界修改为10毫米:<br>
var xml=AF.func("GetProp", "Print");<br>
var hDOM = AF.func("dom_new", xml); //创建DOM对象<br>
var hMargin = AF.func("dom_find", hDOM + "\r\n margin"); //查找节点<br>
AF.func("dom_SetProp", hMargin + "\r\n left \r\n 10"); //设置<br>
xml = AF.func("dom_export", hDOM); //输出xml<br>
AF.func("SetProp", "Print \r\n" + xml); //完成<br>
AF.func("dom_delete", hDOM); //销毁对象<br>
</example>
</function>
<function name="GetUserProps">
<usage>取得 Properties 中的全部自定义属性名</usage>
<return>属性名,多个属性名之间以逗号分隔</return>
</function>
<function name="SetColProp">
<usage>动态更改列属性</usage>
<detail>动态更改XML文档中某 Col 的属性、以及自定义属性</detail>
<para>列名或列号,建议用列名</para>
<para>属性名</para>
<para>内容</para>
<example>AF.func("SetColProp", "CustomerID \r\n edittype \r\n droptreelist");</example>
<memo>1.若要更改列标题文字,请用“Title”属性;<br>2.少数属性如name、atLayer、extentRows、ref是无法修改的</memo>
<illu>参见演示页: 5.图文并茂(2)、24.动态更改属性</illu>
</function>
<function name="GetColProp">
<usage>取得列的属性内容</usage>
<usage>取得XML文档中某 Col 的属性内容、或者自定义属性的内容</usage>
<para>列名或列号,建议用列名</para>
<para>属性名</para>
<return>内容</return>
<memo>如果属性是 "isHide", 返回值只是1或0,如果要判断 absHide 或 absShow, 属性应该用 "isAbsHide" 或 "isAbsShow"</memo>
</function>
<function name="GetColUserProps">
<usage>取得某列的全部自定义属性名</usage>
<para>列名或列号,建议用列名</para>
<return>自定义属性名,如果有多个自定义属性,则以逗号分隔</return>
</function>
<function name="SetDroplistProp">
<usage>更改下拉内容属性</usage>
<detail>动态更改XML中某 Droplist 的属性</detail>
<para>Droplist的ID, 也可以是某列的列名</para>
<para>属性名</para>
<para>内容</para>
<memo>1.更改dataURL相当于是重新加载数据,其内容可以是绝对或相对URL(注意:是相对于XML描述文件,而不是页面),也可以是XML/JSON大串,且对Edittype为Droplist、 DropTreelist均能生效;<br>2.若treelistURL内容是相对URL,那么是相对于该XML描述文件的<br>3.id是无法修改的</memo>
<example>AF.func("SetDroplistProp", "sex \r\n dataURL \r\n &lt;items&gt;&lt;item key=1&gt;男&lt;/item&gt;&lt;item key=2&gt;女&lt;/item&gt;&lt;/items&gt;");</example>
</function>
<function name="AddDroplist">
<usage>增加下拉字典资源</usage>
<detail>动态增加下拉资源(Droplists\Droplist)</detail>
<para>可包含id、treelistURL、dataURL等6个属性,以“;”分隔。 例如"id=cus;treelistURL=cus.xml;dataURL=http://www.abcde.com/aa/aa"</para>
<return>1 - 成功; 空串 - 失败(id为空或重复)</return>
<example>AF.func("AddDroplist", "id=customer;treelistURL=customer.xml;DataCol=id;DisplayCol=name");</example>
<illu>参见演示页: 24.动态更改属性</illu>
</function>
<function name="GetAsTree">
<usage>取得当前是否以树展现</usage>
<return>1/0 - 是/否</return>
</function>
<function name="SetAsTree">
<usage>切换到以树或列表展现</usage>
<para>true - 树, false - 列表</para>
<return>1/0 - 成功/失败</return>
</function>
<function name="GetHandle">
<usage>取得Treelist或下拉的句柄</usage>
<detail>取得当前TreeList、或某下拉TreeList、或某下拉List的句柄</detail>
<para>可以为:<br>
<b>空串(无参数)</b> - 取当前TreeList的句柄;<br>
<b>topBar (或tBar)</b> - 取顶部工具条的Freeform句柄;<br>
<b>bottomBar (或bBar)</b> - 取底部工具条的Freeform句柄;<br>
<b>innerDialog</b> - 取内部非模式对话框的Freeform句柄;<br>
<b>Validation</b> - 取Validation的句柄;<br>
<b>某下拉列的列名</b> - 表示取得某列的下拉DropTreelist、或下拉DropList、或EditWithButton的Droplist字典的句柄;</para>
<return>整数串</return>
<memo>操控下拉TreeList的内容请参见“扩展函数”、操控下拉List的内容请参见“全局函数”</memo>
<illu>参见演示页: 17.Treelist拖曳、18.分页方案(一)</illu>
</function>
<function name="OpenFreeformBar">
<usage>打开freeform工具条</usage>
<para>可以为:<br>
空串(无参数) - freeform采用已定义的 〈freeformRes〉 元素中的freeform;<br>
url - 采用外部一个freeform的URL;<br>
id=[?] - 采用 〈freeformRes〉 下的某个freeform, id是该freeform的id;</para>
<para>可选,0/tBar/topBar - 顶部工具条; 1/bBar/bottomBar - 底部工具条。默认topBar</para>
<illu>参见演示页: 29.查询条件(一)</illu>
</function>
<function name="CloseFreeformBar">
<usage>关闭freeform工具条</usage>
<para>可选,0/tBar/topBar - 顶部工具条; 1/bBar/bottomBar - 底部工具条。<br>
默认值是:如果当前只开启了一个工具条,那么默认的就是这个工具条,否则默认值是topBar</para>
<illu>参见演示页: 29.查询条件(一)</illu>
</function>
<function name="OpenEditFreeformDialog">
<usage>打开用于输入的freeform对话框</usage>
<para>行号</para>
<memo>即回车或双击时打开的对话框,请参见 Properties 中的 editFreeformId 属性</memo>
</function>
</category>
<category name="单元格数据">
<function name="GetCellData">
<usage>取得某单元格的数据</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>可选, true(或1)表示取原始缓存中的数据(即被你修改前的数据), 默认是false(或0)</para>
<return>串</return>
</function>
<function name="SetCellData">
<usage>设置某单元格的数据</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>内容串</para>
<para>可选,true(或1)表示修改原始缓存中的数据(即被你修改前的数据),默认是false(或0).<br>
这个选项一般用于强制更改"NMD"状态, 请参见下面"提交"类函数:GetRowChanged( )</para>
<para>可选,true(或1)表示自动修改 TreeCombine 的其它关联行的CheckBox内容, 默认是false(或0)</para>
<return>1 - 成功; 空串 - 失败</return>
<illu>参见演示页: 28.过滤: 关联下拉</illu>
<memo>1. <font color=red>严重警告:</font>参数2和参数3之间不得留有多余空格,否则结果将不是你所期望的,例如:<br> AF.func("SetCellData", "0 \r\n city \r\n "+ vCity); //执行结果是左侧有多余空格<br>
2.如果内容串中含回车,需要先把回车转义成 "\\r\\n"
</memo>
</function>
<function name="GetCellText">
<usage>取得某单元格的显示内容</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>串</return>
<memo>显示内容是指有下拉、或显示掩码的列,或者是通过 SetCellDataText 函数设置了 <b>key-value对</b>的内容,有别于真实数据(data)的显示串,说白了就是你在屏幕上看到的文字</memo>
<illu>参见演示页: 25.自定义右键菜单</illu>
</function>
<function name="SetCellText">
<usage>设置某单元格的显示内容</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>内容串</para>
<memo>常用于和Droplist绑定的EditWithButton, 否则和SetCellData( )同义.</memo>
<return>1 - 成功; 空串 - 失败</return>
</function>
<function name="SetCellDataText">
<usage>同时设定某单元格的 key-value对</usage>
<usage>同时设定某单元格的 key-value对,包括值、和显示的内容</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>值串</para>
<para>内容串</para>
<memo>1.普通的列都可以拥有简易的 <b>key-value对</b>字典,不管是否下拉;<br>
2.如果 edittype 为 droplist, 此 <b>key-value对</b> 将自动加入下拉字典.</memo>
<return>1 - 成功; 空串 - 失败</return>
</function>
<function name="SetRowCellData">
<usage>设置整行的单元格数据</usage>
<para>行号</para>
<para>XML或JSON大串(允许包含多行内容)</para>
<para>可选, true(或1)表示修改原始缓存中的数据(即被你修改前的数据), 默认是false(或0).<br>
这个选项一般用于强制更改"NMD"状态, 请参见下面"提交"类函数:GetRowChanged( )</para>
<return>被修改的行数</return>
<example>AF.func("SetRowCellData", "0\r\n {id:'k101', price:33.40, orderdt:'2011/12/21'}");</example>
<illu>参见自由表头的演示页: 14.基于Freeform的对话框</illu>
</function>
<function name="SetColCellData">
<usage>设置整列的单元格数据</usage>
<detail>设置整列的单元格数据, 支持表达式,该函数非常有用</detail>
<para>列名或列号(从0开始),建议采用列名</para>
<para>内容串,支持以"="开头的表达式</para>
<para>可选,开始行号,默认0</para>
<para>可选,结束行号,默认-1, 表示末尾行</para>
<para>可选, true(或1)表示修改原始缓存中的数据(即被你修改前的数据), 默认是false(或0).<br>
这个选项一般用于强制更改"NMD"状态, 请参见下面"提交"类函数:GetRowChanged( )</para>
<return>1 / 0 - 成功 / 失败,失败原因有:行列不正确、企图统一设置树节点列</return>
<example>AF.func("SetColCellData", 'price \r\n0'); //price设置成0<br>
AF.func("SetColCellData", 'price \r\n'); //price设置成 null<br>
AF.func("SetColCellData", 'price \r\n=if(product=102, 0, 100)'); //按条件设</example>
<illu>参见演示页: 16.行的复选</illu>
</function>
<function name="GetRadioCol">
<usage>取得某行某个GroupID的单选框(RadioButton)的选中列</usage>
<para>行号(从0开始)</para>
<para>GroupID号,如果只有一个分组,则可忽略</para>
<return>选中的列名</return>
<memo>没有SetRadioCol函数的,因为直接执行SetCellData置选中列的值为1即可.</memo>
</function>
<function name="GetDroplistIndex">
<usage>取得某下拉List的当前选中行顺序号</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>本单元格中的下拉列表的当前选中行, 从0开始计数</return>
<memo>一般用于非排序的下拉List</memo>
</function>
<function name="SetDroplistIndex">
<usage>选中下拉List中的某行</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>本单元格中的下拉列表中的顺序号, 从0开始计数</para>
<return>1 / 0 - 成功 / 失败</return>
<memo>一般用于非排序的下拉List</memo>
</function>
<function name="GetEditText">
<usage>取得当前输入框中的文字</usage>
<return>串</return>
<memo>通常用在事件中,因为你很难把握当前输入框是否正打开着</memo>
</function>
<function name="SetEditText">
<usage>设置当前输入框中的文字</usage>
<para>串</para>
<memo>通常用在事件中,因为你很难把握当前输入框是否正打开着</memo>
</function>
</category>
<category name="单元格属性">
<function name="GetCellEditAble">
<usage>取得某单元EditAble</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>1或0, 空串表示失败</return>
</function>
<function name="SetCellEditAble">
<usage>单独设置某单元格EditAble</usage>
<detail>单独设置某单元格的EditAble,其等级高于行列的EditAble规定,但低于 Properties 中的EditAble规定.</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>1/0,或true/false、yes/no</para>
</function>
<function name="GetCellBackColor">
<usage>取得某单元的背景色</usage>
<detail>取得某单元被单独指定的、或根据DisplayMask计算出来的背景色</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>颜色串</return>
</function>
<function name="SetCellBackColor">
<usage>单独指定某单元的背景色</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>颜色串,空串表示解除背景色</para>
<illu>参见演示页: 24.动态更改属性</illu>
</function>
<function name="GetCellTextColor">
<usage>取得某单元的文字色</usage>
<detail>取得某单元被单独指定的、或根据DisplayMask计算出来的文字色</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>颜色串</return>
</function>
<function name="SetCellTextColor">
<usage>单独指定某单元的文字色</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>颜色串,空串表示解除文字色</para>
<illu>参见演示页: 24.动态更改属性</illu>
</function>
<function name="GetCellAlign">
<usage>取得某单元的文字水平对齐</usage>
<detail>取得某单元被单独指定的文字对齐,如果尚未被指定,则返回该列的默认对齐</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>left / center / right</return>
</function>
<function name="SetCellAlign">
<usage>单独指定某单元的文字水平对齐</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>left / center / right</para>
</function>
<function name="GetCellVAlign">
<usage>取得某单元的文字垂直对齐</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>top / middle / bottom</return>
</function>
<function name="SetCellVAlign">
<usage>单独指定某单元的文字垂直对齐</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>top / middle / bottom</para>
</function>
<function name="GetCellFontIndex">
<usage>取得某单元的字体序号</usage>
<detail>取得某单元被单独指定的字体、或默认的字体(如果没有被单独指定),也可以写成GetCellFont</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>序号,即〈Fonts〉下的字体顺序号</return>
</function>
<function name="SetCellFontIndex">
<usage>单独指定某单元的字体序号</usage>
<detail>单独指定某单元的字体序号,其等级高于默认字体,也可以写成SetCellFont</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>序号,即〈Fonts〉下的字体顺序号,-1表示解除字体</para>
<illu>参见演示页: 24.动态更改属性</illu>
</function>
<function name="GetCellHyperLink">
<usage>取得某单元是否超链接</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>1/0</return>
</function>
<function name="SetCellHyperLink">
<usage>单独指定某单元是否为超链接</usage>
<detail>单独指定某单元是否为超链接,其等级高于〈Col〉的isHyperLink规定</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>true/false</para>
</function>
<function name="GetCellTip">
<usage>取得某单元的Tip</usage>
<detail>取得某单元的Tip, Tip的含义为: 鼠标划过时,浮现的黄色文字注释</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>串</return>
</function>
<function name="SetCellTip">
<usage>单独指定某单元的Tip</usage>
<detail>单独指定某单元的Tip, Tip的含义为: 鼠标划过时,浮现的黄色文字注释</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>串</para>
</function>
<function name="GetCellLeftImage<br>GetCellRightImage">
<usage>取得某单元的左侧/右侧小图标</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>图标的URL</return>
</function>
<function name="SetCellLeftImage<br>SetCellRightImage">
<usage>单独指定某单元的左侧/右侧小图标</usage>
<detail>单独指定某单元的左侧/右侧小图标,优先级高于displayMask指定的图标</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>图标的URL</para>
</function>
<function name="SetCellProp">
<usage>设置某单元格的自定义属性</usage>
<detail>设置某单元格的自定义属性和它的值,每个单元格允许有多个这样的名-值对,其目的是方便程序员的编程设计,Treelist控件不对其语义作任何解析</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>属性名,任意串</para>
<para>该属性的值,任意串</para>
</function>
<function name="GetCellProp">
<usage>取得某单元格的自定义属性的值</usage>
<detail>取得某单元格的自定义属性的值,每个单元格允许有多个这样的名-值对,其目的是方便程序员的编程设计,Treelist控件不对其语义作任何解析</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>属性名,任意串</para>
<return>串,为该属性的值</return>
</function>
<function name="GetCellProps">
<usage>取得某单元格的所有自定义属性</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>串,以逗号分隔的属性名</return>
</function>
</category>
<category name="单元格合并">
<function name="MergeSame(用途1)">
<usage>合并某行给定范围内相同内容的单元格</usage>
<para>格式为:row=[?];col1=[?];col2=[?];isIgnoreNull=[?];isDemergeFirst=[?],含义为:<br>
<b>row</b> - 某行的行号<br>
<b>col1</b> - 开始列名或列号(从0开始),建议采用列名,默认是0<br>
<b>col2</b> - 结束列名或列号(从0开始),建议采用列名,默认是最后列<br>
<b>isIgnoreNull</b> - 内容为空是否就不合并了,true/false,默认是true<br>
<b>isDemergeFirst</b> - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true<br>
<b>isKeepMergeAsPossible</b> - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效<br>
</para>
<illu>参见演示页: 32.合并单元格</illu>
<memo>1.以树展现时,合并无效; 2.合并只改变外观,并不影响各自单元格的数据;</memo>
</function>
<function name="MergeSame(用途2)">
<usage>合并某列给定范围内相同内容的单元格</usage>
<para>格式为:col=[?];row1=[?];row2=[?];isIgnoreNull=[?];isDemergeFirst=[?],含义为:<br>
<b>col</b> - 列名或列号(从0开始),建议采用列名<br>
<b>row1</b> - 开始行的行号,默认是0<br>
<b>row2</b> - 结束行的行号,默认是最后行<br>
<b>isIgnoreNull</b> - 内容为空是否就不合并了,true/false,默认是true<br>
<b>isDemergeFirst</b> - 合并前是否先解除覆盖了该范围的以前的合并,true/false,默认是true<br>
<b>isKeepMergeAsPossible</b> - 如果新的合并区横贯了以前的合并区,是否把以前的合并区拆分为二段,true/false,默认是false, 只有在isDemergeFirst=false时才能生效<br>
</para>
<illu>参见演示页: 32.合并单元格</illu>
<memo>1.以树展现时,合并无效; 2.合并只改变外观,并不影响各自单元格的数据;</memo>
</function>
<function name="Merge">
<usage>合并指定范围内的单元格</usage>
<para>开始行号(从0开始)</para>
<para>开始列名或列号(从0开始),建议采用列名</para>
<para>结束行号(从0开始)</para>
<para>结束列名或列号(从0开始),建议采用列名</para>
<memo>1.参数之间也可以用逗号分隔;<br>
2.以树展现时,合并无效; <br>
3.合并只改变外观,并不影响各自单元格的数据;</memo>
<example>AF.func("merge", "0 \r\n id \r\n 10 \r\n city");</example>
</function>
<function name="DeMerge">
<usage>解除单元格的合并</usage>
<para>可选,开始行号(从0开始)</para>
<para>可选,开始列名或列号(从0开始),建议采用列名</para>
<para>可选,结束行号(从0开始)</para>
<para>可选,结束列名或列号(从0开始),建议采用列名</para>
<memo>1.如果没有参数,表示解除Treelist所有合并;<br>
2.如果只有前2个参数,表示解除覆盖了该单元的合并;<br>
3.参数之间也可以用逗号分隔;<br>
4.以树展现时,合并功能无效</memo>
<example>AF.func("demerge", "0 \r\n id");</example>
</function>
<function name="GetCellStatus">
<usage>取得某单元格的状态</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>A - 普通单元格; <br> H - 被合并; <br> M - 被合并,但位于合并区的左上角,是有效的主单元格; <br> 空串 - 该单元格不存在</return>
<memo>以树展现时,合并功能无效</memo>
</function>
<function name="GetMainCell">
<usage>取得某单元格所在的合并区域中的主单元格(即左上角单元格)</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>诸如"10,3"格式的串,表示“行号,列号”。如果本单元格没有被合并,则返回它自己</return>
<memo>以树展现时,合并功能无效</memo>
</function>
<function name="GetMergedCells">
<usage>取得覆盖了某个单元格的合并范围</usage>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<return>诸如"10,3,20,3"格式的串,表示“开始行号,开始列号,结束行号,结束列号”</return>
<memo>以树展现时,合并功能无效</memo>
</function>
<function name="CopyCellDataByMerge">
<usage>将主单元格的数据复制给被合并的各个单元格</usage>
<detail>将主单元格的数据复制给被合并的各个单元格, 换句话说:所有被合并的单元格的数据,从各自的主单元格(即左上角单元格)中去复制</detail>
<para>可选,开始行号(从0开始)</para>
<para>可选,开始列名或列号(从0开始),建议采用列名</para>
<para>可选,结束行号(从0开始)</para>
<para>可选,结束列名或列号(从0开始),建议采用列名</para>
<memo>该函数一般用于提交前,因为用户如果修改了主单元格,被合并的单元格数据并不会自动跟着变</memo>
</function>
</category>
<category name="树相关">
<function name="IsTreeNodeRow">
<usage>是否树节点行</usage>
<detail>是否树节点行(即树杈行)</detail>
<para>行号(从0开始)</para>
<return>1/0 - 是/否</return>
</function>
<function name="GetTreeLevel(用途一)">
<usage>取得某行在树中的层次级别,从0开始计数</usage>
<para>行号(从0开始)</para>
<return>大于等于0的数字</return>
</function>
<function name="GetParentRow">
<usage>取得某行的父节点所在行</usage>
<para>行号(从0开始)</para>
<return>行号, -1表示失败,原因有:行号无效、已经是顶级、当前不是以树展现</return>
</function>
<function name="GetChildRow">
<usage>取得某行的第一个子孙的行</usage>
<para>行号(从0开始)</para>
<return>行号, -1表示失败,原因有:行号无效、已经是末级、当前不是以树展现</return>
</function>
<function name="GetNextSibling">
<usage>取得某行的下一个同级(即同辈、兄弟)的行</usage>
<para>行号(从0开始)</para>
<return>行号, -1表示失败,原因有:行号无效、已经是同辈中最后的一个(父亲的小儿子)、当前不是以树展现</return>
</function>
<function name="SetTreeImage">
<usage>更改树的图标</usage>
<detail>更改树的图标, 也可写成 SetTreeIcon</detail>
<para>行号(从0开始)</para>
<para>图片文件URL,合拢时的图标</para>
<para>可选,图片文件URL,展开时的图标</para>
<memo>仅对单列多层树有效</memo>
</function>
<function name="GetTreeImage">
<usage>取得树的图标的URL</usage>
<detail>取得树的图标, 也可写成 GetTreeIcon</detail>
<para>行号(从0开始)</para>
<return>URL,如果有不止一个图片(合拢和展开),则以回车分隔</return>
<memo>仅对单列多层树有效</memo>
</function>
<function name="Expand">
<usage>展开树节点</usage>
<para>行号(从0开始计数),如果为空或为 -1,表示展开所有节点</para>
<para>可选,true/false, 表示是否展开其子孙的节点。如果参数1为空或-1, 默认是true, 否则默认值是false</para>
<example>AF.func("expand", "-1 \r\n true"); //展开所有的节点 <br>
AF.func("expand", "-1 \r\n false"); //仅展开第一层的所有节点 <br>
AF.func("expand", "0 \r\n true"); //展开第一行,包括它的所有子孙节点 <br>
AF.func("expand", "0 \r\n false"); //展开第一行,但不包括它的子孙节点 </example>
</function>
<function name="Collapse">
<usage>收拢树节点</usage>
<para>可选,行号(从0开始),如果为空或为 -1,表示收拢所有节点</para>
</function>
<function name="IsExpand">
<usage>树节点是否已展开</usage>
<para>行号(从0开始)</para>
<return>1/0 - 是/否</return>
</function>
<function name="IsLazyloadRow">
<usage>某行是否Lazyload行</usage>
<para>行号(从0开始)</para>
<return>1/0 - 是/否</return>
<memo>用于单列多层树、以Lazyload方式加载数据的场景</memo>
</function>
<function name="RebuildTreeCombine">
<usage>重新整理 TreeCombine 的父节点的 Checkbox</usage>
<memo>用于 TreeCombine 包含了 "auto" 的树</memo>
</function>
<function name="ClearLazyload">
<usage>强制设定某Lazyload行没有子孙</usage>
<para>行号(从0开始)</para>
<memo>用于单列多层树、以Lazyload方式加载数据的场景</memo>
</function>
</category>
<category name="当前行 /<br> 当前单元格">
<function name="GetCurrentRow (方式一)">
<usage>取得当前选中的行</usage>
<return>行号(从0开始),空串表示没有当前行;如果有多行,行号之间以逗号分隔</return>
</function>
<function name="GetCurrentRow (方式二)">
<usage>取得当前选中的行</usage>
<para>顺序号,从0开始,依次取得第几个选中行,直到返回空串</para>
<return>行号(从0开始),空串表示没有当前行</return>
</function>
<function name="GetCurrentRows">
<usage>取得当前选中行的数量</usage>
<return>数量</return>
</function>
<function name="IsRowSelected">
<usage>某行是否被选中</usage>
<para>行号(从0开始)</para>
<return>1/0 - 是/否</return>
</function>
<function name="GetCurrentCell">
<usage>取得当前选中的单元格</usage>
<detail>用于取得当 curSelMode=“excel” 时当前选中的单元格范围,因为此时选中的单元格是一个区域</detail>
<para>如果为串 “ColName”,表示返回的列是用列名,否则用列号,默认是列号</para>
<return>以逗号分隔的4个值:开始行号, 开始列号或列名,结束行号, 结束列号或列名</return>
<example>var s = AF.func("GetCurrentCells", ""); //返回串可能为 "3,5,4,6" <br>
var s = AF.func("GetCurrentCells", "ColName"); //返回串可能为 "3,dept,4,price"
</example>
</function>
<function name="SelectRow">
<usage>选定当前行</usage>
<para>行号(从0开始)</para>
<para>可选,true/false - 允许动画方式定位/禁止动画, 默认false</para>
<memo>1.在可多选(curselmode = rows)的情况下,可以有多个参数,分别表示其它各个选中行;<br>
2.如果行号无效,原当前行将失去当前标记</memo>
</function>
<function name="SelectCell">
<usage>将焦点切换到某单元格</usage>
<detail>选定当前行、并让某个单元格立即进入编辑状态</detail>
<para>行号(从0开始)</para>
<para>列名或列号(从0开始),建议采用列名</para>
<para>可选,true/false - 允许动画方式定位/禁止动画, 默认false</para>
<memo>如果行列号无效,原当前行将失去当前标记</memo>
<illu>参见自由表头的演示页: 9.有表头表体的表单(1)</illu>
</function>
</category>
<category name="行列增删">
<function name="InsertRows">
<usage>插入行</usage>
<para>插入处行号(从0开始,-1表示从末尾添加)</para>
<para>可选, 插入行数,默认1</para>
<para>可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插</para>
<para>可选, 选项子句,语法为:<br>
raiseEvent=[true/false];selectRow=[true/false];openEdit=[true/false];asChild=[true/false], 各选项的含义为:<br>
<b>raiseEvent</b>(或 <b>isRaiseEvent</b>) - 是否触发 rowsInserted 事件,默认是false<br>
<b>selectRow</b>(或 <b>isSelectRow</b>) - 是否将当前行切换成新插入行,默认是true<br>
<b>openEdit</b>(或 <b>isOpenEdit</b>) - 是否继续直接打开输入框,默认是true<br>
<b>asFirstChild</b> - 后插的行是否作为第一个儿子,默认是false;<br>
<b>asLastChild</b> - 后插的行是否作为最后一个儿子,默认是false;<br>
备注:asFirstChild, asLastChild 不能同时为true,并且仅用于 treeFormat="format=byId; autoid=true" 或 "format=bypid"、"format=bydata"的单列多层树、在后插入1行的情况;<br>
</para>
<return>新增行的行号,空串表示失败</return>
<example>AF.func("insertRows", "0 \r\n 1 \r\n false \r\n raiseEvent=true;SelectRow=false");</example>
<memo>当以树显示时,插入的新行是插入处所在行(即参数1)的同级</memo>
</function>
<function name="InsertCol">
<usage>插入列</usage>
<para>插入处列号(从0开始,-1表示从末尾添加)</para>
<para>列的参数,例如"name=price;title=项目名称;width=100",列属性可参考<a href='../format_treelist/index.htm' target=_blank>Supcan Treelist XML文档规范</a>之Cols\col;</para>
<return>新增列的列号,空串表示失败</return>
<illu>参见演示页: 16.行的复选</illu>
</function>
<function name="DeleteRows (方式一)">
<usage>删除行</usage>
<para>开始删除的行号(从0开始)</para>
<para>行数,-1表示删除后面所有行</para>
<para>可选, 选项子句,语法为:<br>
raiseEvent=[true/false];cacheKey=[true/false];withChild=[true/false], 各选项的含义为:<br>
<b>raiseEvent</b>(或 <b>isRaiseEvent</b>) - 是否触发 rowsDeleted 事件,默认是false<br>
<b>cacheKey</b>(或 <b>isCacheKey</b>) - 是否将删除行的Key存入删除缓冲区(用于提交),默认是true<br>
<b>withChild</b>(或 <b>withChildren</b>) - 当以树显示时,是否将其子孙行也删除,默认是false<br>
</para>
<illu>参见演示页: 20.提交修改内容、25.自定义右键菜单</illu>
</function>
<function name="DeleteRows (方式二)">
<usage>删除行</usage>
<para>表达式。满足表达式的行均会被删除</para>
<para>可选, 选项子句,语法为:<br>
raiseEvent=[true/false];cacheKey=[true/false];withChild=[true/false], 各选项的含义为:<br>
<b>raiseEvent</b>(或 <b>isRaiseEvent</b>) - 是否触发 rowsDeleted 事件,默认是false<br>
<b>cacheKey</b>(或 <b>isCacheKey</b>) - 是否将删除行的Key存入删除缓冲区(用于提交),默认是true<br>
<b>withChild</b>(或 <b>withChildren</b>) - 当以树显示时,是否将其子孙行也删除,默认是false<br>
</para>
<example>AF.func("deleteRows", "price>100 and toUpperCase(left(ProdId,2))='KS' \r\n cacheKey=true");</example>
<illu>参见演示页: 16.行的复选</illu>
</function>
<function name="DeleteCurrentRow">
<usage>删除当前行</usage>
<para>可选, 选项子句,语法为:<br>
raiseEvent=[true/false];cacheKey=[true/false];withChild=[true/false], 各选项的含义为:<br>
<b>raiseEvent</b>(或 <b>isRaiseEvent</b>) - 是否触发 rowsDeleted 事件,默认是false<br>
<b>cacheKey</b>(或 <b>isCacheKey</b>) - 是否将删除行的Key存入删除缓冲区(用于提交),默认是true<br>
<b>withChild</b>(或 <b>withChildren</b>) - 当以树显示时,是否将其子孙行也删除,默认是false<br>
</para>
<memo>如果当前行允许多选,那么可能有多行</memo>
</function>
<function name="CopyCurrentRow">
<usage>复制当前行</usage>
<detail>将当前行拷贝入操作系统的剪帖板</detail>
<memo>如果有多个当前行(多选),那么所有选中行内容都将被复制</memo>
</function>
<function name="PasteCurrentRow">
<usage>粘帖到当前行</usage>
<detail>将操作系统剪帖板内容粘帖到当前行</detail>
<memo>如果有多个当前行(多选),那么所有选中行内容都将被粘帖</memo>
</function>
<function name="PasteNewRow">
<usage>粘帖到新增行</usage>
<detail>将操作系统剪帖板内容粘帖到新增行</detail>
</function>
<function name="MoveCol">
<usage>移动某列的位置</usage>
<para>列名或列号(从0开始),建议采用列名</para>
<para>目标列的列名或列号(从0开始),建议采用列名</para>
<para>可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插</para>
<return>新的位置, -1失败</return>
<illu>参见演示页: 13.分类汇总</illu>
</function>
<function name="MoveRow">
<usage>移动某行的位置</usage>
<para>行号(从0开始)</para>
<para>目标行的行号(从0开始)</para>
<para>可选, true/false(或1/0、yes/no),分别表示前插/后插,默认前插</para>
<return>新的位置, -1失败</return>
</function>
</category>
<category name="行列属性">
<function name="GetNextValidRow">
<usage>遍历行</usage>
<detail>遍历行,用于需要自动跨越隐藏行、树杈行(多列多层树)、小计行、合计行的情形</detail>
<para>开始行, 如果是从头遍历,参数应该为空串或“-1”</para>
<para>可选, 1 / -1 表示 正向/反向遍历, 默认是1</para>
<return>行号,空串表示遍历完毕</return>
<illu>参见小型页面控件的演示页: 2.与Treelist联动</illu>
</function>
<function name="GetNextValidCol">
<usage>遍历列</usage>
<detail>遍历列,用于需要自动跨越多列多层树的首列的情形</detail>
<para>开始列的列名, 如果是从头遍历,参数应该为空串</para>
<return>列名,空串表示遍历完毕</return>
<illu>参见自由表头的演示页: 14.和Treelist互动、13.基于Freeform的对话框</illu>
<example>例如js:<br>
for(col=AF.func("GetNextValidCol", ""); col!=""; col=AF.func("GetNextValidCol", col)) {<br>
...<br>
}
</example>
</function>
<function name="GetNextVisibleCol">
<usage>遍历可视列</usage>
<detail>遍历可视列,用于需要自动跨越隐藏列、树的首列的情形</detail>
<para>开始列的列名, 如果是从头遍历,参数应该为空串</para>
<return>列名,空串表示遍历完毕</return>
<example>例如js:<br>
for(col=AF.func("GetNextVisibleCol", ""); col!=""; col=AF.func("GetNextVisibleCol", col)) {<br>
...<br>
}
</example>
</function>
<function name="IsTotalRow">
<usage>是否合计行</usage>
<detail>是否合计行,通常合计行只有一行,且位于最后</detail>
<para>行号(从0开始计数)</para>
<return>1 - 是,0 - 否</return>
</function>
<function name="IsSubTotalRow">
<usage>是否小计行</usage>
<para>行号(从0开始)</para>
<return>1 - 是,0 - 否</return>
</function>
<function name="GetTreeLevel(用途二)">
<usage>取得某小计行的分类层次级别,从1开始计数</usage>
<para>行号(从0开始)</para>
<return>如果此行不是小计行,返回0,否则返回大于0的数字,其含义是分类的层次,最外层是1</return>
</function>
<function name="GetRowKey">
<usage>取得某行的Key(即键值)</usage>
<detail>取得某行的Key(即键值)</detail>
<para>行号(从0开始)</para>
<para>可选,复合主键的分隔符,默认逗号(,)</para>
<para>可选, 0或1, 1表示取被修改前的原始内容, 默认是0</para>
<return>Key串</return>
</function>
<function name="GetRowEditAble">
<usage>某行是否能修改</usage>
<para>行号(从0开始)</para>
<return>1 - 是,0 - 否</return>
</function>
<function name="GetColEditAble">
<usage>某列是否能修改</usage>
<para>列名</para>
<return>1 - 是,0 - 否</return>
</function>
<function name="SetRowEditAble">
<usage>置某行能否修改</usage>
<para>行号(从0开始)</para>
<para>true/false(或1/0、yes/no)</para>
</function>
<function name="SetColEditAble">
<usage>置某列能否修改</usage>
<para>列名</para>
<para>true/false(或1/0、yes/no)</para>
</function>
<function name="GetColName">
<usage>取得列名</usage>
<para>列号(从0开始)</para>
<return>串</return>
</function>
<function name="GetColTitle">
<usage>取得列标题</usage>
<para>列号(从0开始),或列名</para>
<return>串</return>
<illu>参见小型页面控件的演示页: 2.与Treelist联动</illu>
</function>
<function name="SetRowDeleteAble">
<usage>单独指定某行是否允许被删除(仅限于右键菜单)</usage>
<para>行号(从0开始)</para>
<para>true/false</para>
</function>
<function name="GetRowDeleteAble">
<usage>取得某行是否允许删除</usage>
<para>行号(从0开始)</para>
<return>1 / 0 - 允许/不允许</return>
</function>
<function name="GetRowBackColor">
<usage>取得某行被单独指定的背景色</usage>
<para>行号(从0开始)</para>
<return>颜色串,空串表示该行尚未被单独指定背景色</return>
</function>
<function name="SetRowBackColor">
<usage>单独指定某行的背景色</usage>
<para>行号(从0开始)</para>
<para>颜色串,空串表示解除背景色</para>
</function>
<function name="GetRowTextColor">
<usage>取得某行被单独指定的文字色</usage>
<para>行号(从0开始)</para>
<return>颜色串,空串表示该行尚未被单独指定文字色</return>
</function>
<function name="SetRowTextColor">
<usage>单独指定某行的文字色</usage>
<para>行号(从0开始)</para>
<para>颜色串,空串表示解除文字色</para>
</function>
<function name="GetRowEnable">
<usage>某行是否Enable</usage>
<detail>某行是否Enable,disable的行以灰色(或删除线)显示、不可编辑、不触发Clicked和DblClicked事件、不可拖拽</detail>
<para>行号(从0开始)</para>
<return>1/0/空串 - 是/否/无效行号</return>
<illu>请参见演示页: 28.下拉的其它功能</illu>
</function>
<function name="SetRowEnable">
<usage>置某行为Enable或disable</usage>
<detail>置某行为Enable或disable,disable的行以灰色(或删除线)显示、不可编辑、不触发Clicked事件</detail>
<para>行号(从0开始)</para>
<para>true/false(或1/0、yes/no) - 表示enable/disable</para>
<illu>请参见演示页: 28.下拉的其它功能</illu>
</function>
<function name="IsRowHide">
<usage>某行是否隐藏</usage>
<detail>或GetRowHide,某行是否隐藏</detail>
<para>行号(从0开始)</para>
<return>1/0/空串 - 隐藏/显示/无效行号</return>
</function>
<function name="HideRow">
<usage>隐藏某行</usage>
<para>行号(从0开始)</para>
<para>true/false - 隐藏/显示</para>
</function>
<function name="IsColHide">
<usage>某列是否隐藏</usage>
<detail>或GetColHide,某列是否隐藏,等同GetColProp(colname, "isHide")</detail>
<para>列名</para>
<return>1/0/空串 - 隐藏/显示/无效列名</return>
</function>
<function name="HideCol">
<usage>隐藏某列</usage>
<detail>隐藏某列,等同SetColProp(colname, "isHide", 1/0)</detail>
<para>列名</para>
<para>true/false - 隐藏/显示</para>
</function>
<function name="GetColCheckState">
<usage>取得isCheckboxOnly列标题处的CheckBox的状态</usage>
<para>列名或列号(从0开始),建议采用列名</para>
<return>1/0 - 已选中/未选中</return>
</function>
<function name="SetColCheckState">
<usage>设置isCheckboxOnly列标题处的CheckBox的状态</usage>
<para>列名或列号(从0开始),建议采用列名</para>
<para>1/0 - 已选中/未选中</para>
<memo>仅修改选中状态,并不改动数据. 如果要修改整列的数据,请执行 SetColCellData 函数</memo>
</function>
<function name="GetColGroup">
<usage>取得某列所属的分组(Group)</usage>
<para>列名或列号(从0开始),建议采用列名</para>
<para>top/all - 仅返回顶层分组名/返回所有分组名,默认是 top</para>
<return>所属Group的名称,如果有多层分组,则以逗号分隔</return>
</function>
</category>
<category name="行列操作">
<function name="EnsureVisible">
<usage>保证让某个单元格或某行在屏幕中可见</usage>
<para>行号</para>
<para>可选, 列名, 如果为空表示仅定位行</para>
<para>可选,true/false - 允许动画方式定位/禁止动画, 默认false</para>
</function>
<function name="Find">
<usage>条件搜索</usage>
<detail>按表达式查找,并返回首个符合条件的行号</detail>
<para>表达式(可参见<a href="pub.htm#Tag601" target=_blank>“公共内容\表达式”</a>)</para>
<para>可选, 格式为startRow=[行号];content=[asData/asDisplay];isReverse=[?], 其含义为:<br>
<b>startRow</b> - 开始的行号,默认是0;<br>
<b>content</b> - 为 asData 或 asDispplay,默认是asData, 表示搜索的内容是值还是显示的文字(例如下拉的值和显示文字是不一样的);<br>
<b>isReverse</b> - 为 true/false, 表示正向搜索 / 逆向搜索,默认是false;<br>
</para>
<return>行号,-1表示未能找到匹配的行</return>
</function>
<function name="FindAll">
<usage>条件搜索</usage>
<detail>按表达式查找,并返回符合条件的所有行号</detail>
<para>表达式(可参见<a href="pub.htm#Tag601" target=_blank>“公共内容\表达式”</a>)</para>
<para>可选, 格式为 content=[asData/asDisplay], 其含义为:<br>
<b>content</b> - 为 asData 或 asDispplay,默认是asData, 表示搜索的内容是值还是显示的文字(例如下拉的值和显示文字是不一样的).
</para>
<return>从小到大排列的行号串,行号之间以逗号分隔,空串表示未能找到匹配的行</return>
<example>var s=AF.func("findAll", "price<20 and if(len(ProcId)==0, 1, 0)");</example>
</function>
<function name="FindByKey">
<usage>按键值搜索</usage>
<para>键值</para>
<para>可选,表示复合主键之间的分隔符,默认是逗号</para>
<return>行号,-1表示未找到</return>
</function>
<function name="Filter">
<usage>过滤</usage>
<detail>对已加载的数据进行过滤,只显示满足条件的行</detail>
<para>表达式(可参见<a href="pub.htm#Tag601" target=_blank>“公共内容\表达式”</a>)</para>
<para>可选,格式为 droplistCol=[?]; content=[asData/asDisplay], 其含义为:<br>
<b>droplistCol</b> - , 列名,表示仅对该列的下拉TreeList的内容进行过滤;<br>
<b>content</b> - 为 asData 或 asDispplay,默认是asData, 表示搜索的内容是值还是显示的文字(例如下拉的值和显示文字是不一样的).</para>
<return>1 - 成功,0 - 失败,失败原因通常为表达式书写错误</return>
<example>AF.func("Filter", "price<20 and if(len(ProcId)==0, 1, 0)");</example>
<illu>参见演示页: 26.过滤、27.过滤: 关联下拉</illu>
</function>
<function name="ApplyFilter">
<usage>对某个下拉执行过滤</usage>
<detail>对某个下拉列执行过滤,通常用于EditChanged事件中,对多个关联下拉、下拉过滤采用了表达式的某个下拉强制过滤</detail>
<para>基准的行号,例如在EditChanged事件中,行号就是 p1 参数</para>
<para>下拉列的列名</para>
<return>无</return>
<example>AF.func("ApplyFilter", p1 + "\r\n cityId");</example>
</function>
<function name="EnableDrag">
<usage>使2个Treelist之间能够拖拉行</usage>
<detail>使2个Treelist之间能够用鼠标拖拉(Drag)行</detail>
<para>另一个TreeList的句柄(句柄可通过GetHandle()取得)</para>
<return>1 - 成功</return>
<illu>参见演示页: 17.Treelist拖曳</illu>
</function>
<function name="DisableDrag">
<usage>终止2个Treelist之间的行拖拉</usage>
<para>另一个TreeList的句柄(句柄可通过GetHandle()取得)</para>
<return>1 - 成功</return>
</function>
<function name="Copy">
<usage>将某单元格/某行/某区块内容复制进内存剪切板</usage>
<para>开始行号</para>
<para>开始列名或列号(从0开始),建议采用列名</para>
<para>可选,结束行号,默认等于开始行号</para>
<para>可选,结束列名或列号(从0开始),建议采用列名,-1表示最后列,默认值是-1</para>
<para>可选,可包含如下属性子句:content=[asData/asDisplay];isIncludeTotalRow=[true/false];inIncludeHide=[true/false],含义为:<br>
<b>content</b> - 内容,asData表示纯数据,asDisplay表示显示的内容,默认是asData;<br>
<b>includeTotalRow</b> (或<b>isIncludeTotalRow</b>) - 是否包含合计/小计行,默认是false;<br>
<b>includeHide</b> (或<b>isIncludeHide</b>) - 是否包含隐藏行或隐藏列,默认是false;<br>
</para>
<return>1/0 - 成功/失败</return>
<example>
AF.func("copy", "3 \r\n 0"); //复制第四行整行<br>
AF.func("copy", "3 \r\n orderid \r\n 5 \r\n price \r\n content=asDisplay;includeHide=true"); //复制一个区块<br>
</example>
</function>
<function name="ScrollToRow">
<usage>窗口滚动到某行</usage>
<para>行号(从0开始), 表示滚动到的首个可见行</para>
<memo>请参见函数 GetScrollRow </memo>
</function>
<function name="GetScrollRow">
<usage>取得窗口首个可见行</usage>
<return>行号</return>
<memo>请参见函数 ScrollToRow </memo>
</function>
</category>
<category name="提交">
<function name="Validate">
<usage>验证</usage>
<detail>验证输入的内容. 如果未通过验证,将自动浮现出错误提示,并将当前单元格切换到未通过验证的单元格</detail>
<para>可选, 可以有如下的选项,相互以分号分隔:<br>
<b>startRow</b> - 开始行,默认是0;<br>
<b>endRow</b> - 结束行,默认是-1,-1表示最后行;<br>
<b>isValidateKey</b> - 是否需要在校验Key(例如key重复),默认是True;<br>
<b>includeCol / excludeCol</b> - 仅包含某些列/不包含某些列,二者可选其一,表示列的<b>范围</b>. 列名之间以逗号分隔。默认是空串,表示验证所有列;<br>
备注1:这个“范围”是指验证的范围,以及限定NMD中“M”的识别范围.<br>
备注2:Key以及Key的验证和这个“范围”无关.<br>
</para>
<return>1 - 通过验证;<br>0 - 未通过客户端验证, 如notNull、isUnique,以及〈Validations〉中的内容</return>
<example>AF.func("Validate", "isValidateKey=false");</example>
<memo>一般不需要调用这个函数,因为函数GetChangedXML( )本身就包含了验证过程.</memo>
</function>
<function name="GetChangedXML">
<usage>取得修改过的内容, 包括增、删、改</usage>
<detail>调用Validate( )验证,并生成用于提交的XML大串, XML格式规范请参见 "XML提交格式规范". </detail>
<para>可选, 可以有如下的选项,相互以分号分隔:<br>
<b>level</b> - 级别号,可以是0(默认)、1、2、3,其含义分别为:<br> 0 - 级别0,生成当前全部、最新内容(不包括修改前的原始内容);<br> 1 - 级别1,仅生成被修改过的单元格的内容(包括原始内容);<br> 2 - 级别2,在级别1的基础上,增加被修改过单元的整行内容;<br> 3 - 级别3,内容包含所有行、所有列、修改前后的内容;<br>
<b>isIgnoreChange</b> - true/false, 仅用于Level=0. true表示不管内容是否被修改过,始终生成XML; false表示除非内容被修改过,否则返回空串. 默认是false;<br>
<b>startRow</b> - 开始行,默认是0;<br>
<b>endRow</b> - 结束行,默认是-1,-1表示最后行;<br>
<b>DateFormat</b> - 日期的格式,默认是'%Y.%m.%d',可参见<a href="pub.htm#now" target=_blank>公共内容中now( )函数</a>的参数;<br>
<b>DateTimeFormat</b> - 日期时间的格式,默认是'%Y.%m.%d %H:%M:%S',可参见<a href="pub.htm#now" target=_blank>公共内容中now( )函数;</a>的参数<br>
<b>isValidateKey</b> - 是否需要在客户端校验Key(如key重复),默认是True;<br>
<b>isExecuteValidations</b> - 是否自动执行XML描述文件的〈Validations〉中的验证,默认是true.<br>
<b>includeCol / excludeCol</b> - 仅包含某些列/不包含某些列,二者可选其一,表示列的<b>范围</b>. 列名之间以逗号分隔。默认是空串,表示提交所有列;<br>
<b>absIncludeCol</b> - 始终包含某些列,不管其列数据有没有被修改过,并且在删除行的XML节点中也包含这些列的内容. 仅用于Level=1;<br>
备注1:这个“范围”是指提交、验证的范围,以及限定NMD中“M”的识别范围.<br>
备注2:Key以及Key的验证和这个“范围”无关.<br>
<b>CompKeySep</b> - 复合主键的分隔符,默认逗号分隔;<br>
</para>
<return>XML大串 - 成功;<br>空串 - 内容尚未被修改;<br>0 - 失败(原因为未通过客户端验证, 如notNull、isUnique)</return>
<memo>1.XML描述文件的〈Properties〉中必须定义Key;<br>2.如果包含了开始行和结束行参数,生成的XML中将不包括被删除行的信息</memo>
<example>//取得级别为0、复合主键无分隔符的XML提交串,且不校验Key是否重复<br>
AF.func("GetChangedXML", "level=0; CompKeySep=;isValidateKey=false");<br>
//取得级别为1、不校验Key重复、仅包含3个字段的XML提交串<br>
AF.func("GetChangedXML", "level=1; isValidateKey=false; includeCol=id,price,custid");<br>
</example>
<illu>参见演示页: 20.提交修改内容、21.4种提交级别、22.连续输入提交控制</illu>
</function>
<function name="GetRowChanged">
<usage>取得某行或整表的修改状态</usage>
<para>行号(从0开始). 如果为 -1,表示所有行,即整个表.</para>
<para>可选, 状态掩码,为字母 N、M、D 的组合(简称“ni-ma-的”):<br>
N - 表示有新增行;<br>
M - 表示有修改过的行;<br>
D - 表示有删除行(仅用于整表)<br>
默认值为 NM 或 NMD(如果是整表)</para>
<return>为上述3个字母的组合,空串表示未符合掩码</return>
<example>AF.func("GetRowChanged", "-1\r\n ND"); //可能返回N、D、ND、空串<br>
AF.func("GetRowChanged", "30"); //可能返回N、M、NM、空串</example>
</function>
<function name="SetAsNewRow">
<usage>修改某行的“新增行”状态(和GetRowChanged的 "N" 相关)</usage>
<detail>修改某行的“新增行”状态(和GetRowChanged的 "N" 相关),它影响GetChangedXML( )的执行结果</detail>
<para>行号(从0开始)</para>
<para>可选,true/false,默认true</para>
</function>
<function name="GetCellChanged">
<usage>取得某单元格是否被修改过</usage>
<para>行号(从0开始)</para>
<para>开始列名或列号(从0开始),建议采用列名</para>
<return>M - 被修改过,空串:未改过</return>
</function>
<function name="SetCellChanged">
<usage>强制更改某单元格的修改状态</usage>
<para>行号(从0开始)</para>
<para>开始列名或列号(从0开始),建议采用列名</para>
<para>M - 将原始缓存数据修改成和当前不一样的内容, 空串 - 用当前内容替换原始缓存数据</para>
</function>
<function name="ResetChanged">
<usage>合并修改内容,清除行和单元格的修改标记,以避免重复提交.</usage>
<detail>合并修改内容,清除行和单元格的修改标记(即 "NMD" 状态),以避免重复提交.</detail>
<para>可选,表示开始行,默认是0</para>
<para>可选,表示结束行,默认是-1, -1表示末行</para>
<para>可选,是多个"名=值"对选项,以分号分隔:<br>
<b>includeCol/excludeCol</b> - 仅包括某些列/仅排除某些列,二者只能选其一, 列名之间以逗号分隔. 默认为空,表示包含全部列;<br>
<b>resetDelete</b> - true/false, true表示清空删除行的缓存,默认是true, 该选项和开始行、结束行无关;<br>
<b>resetNew</b> - true/false, true表示清除新增行的“新增”标志,默认是true, 该选项和开始行、结束行有关;<br>
</para>
<example>
//清除所有修改标记;<br>
AF.func("resetchanged", "");<br>
//仅清除某单元格的"M"标志;<br>
AF.func("resetchanged", "3\r\n3\r\n includeCol=id; resetDelete=false; resetNew=false");<br>
//清除所有行中除了3个列以外的"M"标志, 并清除删除行缓存("D");<br>
AF.func("resetchanged", "0\r\n-1\r\n excludeCol=id,orgNo,flag; resetDelete=true; resetNew=false");</example>
<illu>参见演示页: 22.连续输入提交控制</illu>
</function>
<function name="GetDeleteRows">
<usage>取得被删除的总行数</usage>
<detail>或 GetDeletedRows,取得被删除的总行数.</detail>
<return>被删除的总行数</return>
<memo>删除区并不缓存新插入的行.</memo>
</function>
<function name="GetDeleteKey">
<usage>取得被删除的行中某行的Key</usage>
<detail>或 GetDeletedKey,取得被删除的行中某行的Key.</detail>
<para>序号,空串表示取得所有被删行的Key</para>
<return>Key值,如果是多个行,则以逗号分隔</return>
<memo>删除区并不缓存新插入的行.</memo>
</function>
<function name="UnDelete">
<usage>恢复被删除的行</usage>
<para>以逗号分隔的Key值,空串表示恢复所有被删行</para>
<return>恢复的总行数</return>
<memo>1.被恢复的行将位于表格末尾处;<br>
2.删除区并不缓存新插入的行.</memo>
</function>
</category>
<category name="其它">
<function name="GetCustom">
<usage>取得当前Treelist的定制信息</usage>
<detail>取得当前Treelist的外观状态XML串用于上传,使操作者可定制外观</detail>
<return>XML串</return>
<illu>参见演示页: 33.定制</illu>
</function>
<function name="SetCustom">
<usage>设置Treelist定制信息</usage>
<para>XML串</para>
<detail>应用原先已保存(上传)的外观状态XML串</detail>
<illu>参见演示页: 33.定制</illu>
</function>
<function name="AddMenu">
<usage>增加自定义的弹出菜单项</usage>
<para>串、XML串,或URL,内容的格式规范请参考Treelist的帮助文档“8.自定义菜单”</para>
<para>可选,格式为LocateAt=[top/bottom], 表示自定义菜单在弹出时位于顶部还是底部,默认是bottom</para>
<memo>只能在OnEvent(id, "MenuBeforePopup", ...)事件中执行。</memo>
<illu>参见演示页: 25.自定义右键菜单</illu>
</function>
<function name="EnableMenu">
<usage>配置内置的右键菜单项,使之能显示</usage>
<para>固定的菜单项名称,以逗号分隔,含义为: <br>
copy - 复制 paste - 粘贴 pasteNewRow - 粘贴到新行<br>
delete - 删除 deleteMore - 删除更多 insert - 插入<br>
print - 打印预览 addSort - 加入多重排序 selectCol - 自定义显示隐藏列<br>
export - 转换输出 import - 导入Excel2007文件 hue - 色调<br>
separate - 分屏冻结 enter - 回车键行为 expandTree - 展开/合拢树<br>
showRuler - 显示/隐藏左标尺 displayAs - 以列表/树展现<br>
exportAll - 转换输出全部页(用于分页显示时) printAll - 打印全部页(用于分页显示时)<br>
language - 语言切换
</para>
<para>可选, true - 仅对参数1的菜单项生效; false - 仅显示参数1的菜单项,其余的统统不显示.<br>默认是true</para>
<memo>默认情况下,language、exportAll、printAll是disable的</memo>
</function>
<function name="DisableMenu">
<usage>配置内置的右键菜单项,使之不显示</usage>
<para>同上</para>
<para>可选,true/false.<br> true - 仅对参数1的菜单项生效; false - 仅隐藏参数1的菜单项,其余的统统显示, 默认是true</para>
<para>可选,true/false.<br> true - 临时性的,仅用于 MenuBeforPopup 事件中, 默认是false</para>
<memo>默认情况下,language、exportAll、printAll是disable的</memo>
</function>
<function name="GetRedrawAble">
<usage>是否能够重画</usage>
<return>1 / 0 - 能 / 不能</return>
</function>
<function name="SetRedrawAble">
<usage>设置让Treelist能够重画或不能重画</usage>
<detail>设置让Treelist能够重画或不能重画。为了提高性能,消除不必要的重画,在需要连续对Treelist作改动性操作(比如改数据、改属性)前关闭重画,操作完成后再开启重画.</detail>
<para>true/false - 能 / 不能</para>
</function>
<function name="PrintPreview">
<usage>打印预览</usage>
</function>
<function name="Print">
<usage>直接打印</usage>
</function>
<function name="Import">
<usage>从 xlsx 文件导入数据</usage>
<para>格式为 filename=[?];SheetName=[?];isDeleteFirst=[?];HeaderRows=[?];TailRows=[?]; 列名1=[?]; 列名2=[?]...; 列名n=[?]:<br>
<b>FileName</b> - xlsx 文件的全文件名;<br>
<b>SheetName</b> 或 <b>Sheet</b> - 如果是多工作表,需指定的工作表名,否则默认导入第一个工作表;<br>
<b>HeaderRows</b> - xlsx的上方不得导入的行数;<br>
<b>TailRows</b> - xlsx的下方不得导入的行数;<br>
<b>isDeleteFirst</b> - true/false, 是否先删除原先的数据, 默认是false;<br>
<b>各个列名</b> - xlsx中各个列的列号, 对应到XML中的列ID。需要逐个列对应过去,如果不指定这个对应关系,则以自然顺序逐个自动对应;<br>
</para>
<return>1/0 - 成功/失败</return>
<example>AF.func("Import", "filename=d:\\表1.xlsx; A=Country; B=PrdId; D=price");</example>
</function>
<function name="Export">
<usage>取得XML格式的全部数据</usage>
<detail>取得XML格式的全部数据,一般用于打印:将串作为数据源转交给Report组件.</detail>
<para>可选,为 asData 或 asDisplay,表示输出内容是纯数据,还是和界面显示的一样串,默认是asDisplay</para>
<para>可选,为行的范围,默认是全部行,格式可以为:<br>
row = 行号,多个行之间以逗号分隔;<br>
startRow = 开始行的行号;<br>
endRow = 结束行的行号(注:不包括结束行);<br>
或 count = 行数;<br>
</para>
<return>XML大串</return>
<illu>参见自由表头的演示页: 10.有表头表体的表单(2)、14.基于Freeform的对话框</illu>
<example>var row=4;<br>AF.func("Export", "asData \r\n row=" + row);</example>
</function>
<function name="OpenExportDialog">
<usage>打开转换输出对话框</usage>
<para>可选串,格式为: <br>type=[?];typeOnly=[?];filename=[?];content=[?];dropdown=[?];includeHide=[?];includeHeader=[?];scale=[?];precision=[?], 其含义说明如下:<br>
<b>type</b> - 首选的文件名后缀,例如xlsx、 jpg、 pdf之类.<br>
<b>typeOnly</b> - 和type类似,表示仅限于该种文件类型.<br>
<b>gridLine</b> - 是否显示表格线,仅用于XLS.<br>
<b>filename</b> - 指定文件名.<br>
<b>content</b> - 为asData 或 asDisplay,表示输出内容是纯数据,还是和界面显示的一样串,默认是asData.<br>
<b>dropdown</b> - 为asData、asDisplay 或 asDataAndDisplay,表示下拉内容的输出格式,默认是asData.<br>
<b>includeHide</b> - 为true或false,表示是否包含隐藏列,默认是false.<br>
<b>includeHeader</b> - 为true或false,表示是否包含列标题,默认是true.<br>
<b>scale</b> - 图像类文件的打印比例,范围是10 到 400,默认100。对于PDF而言,Scale越大越清晰,例如300表示在300%的显示比例下仍很清晰.<br>
<b>precision</b> - JPG精度,仅对JPG有效,精度范围1-100(默认85),越接近100越清晰,但文件尺寸越大.<br>
<b>isOpenDialog</b> - 是否需要弹出对话框.<br>
<b>isEcho</b> - 完成后是否需要提示框提示成功与否.<br>
</para>
<return>转换输出成功的文件名(含路径的全文件名),空串表示未作转换. 如果有多个文件名,则以回车分隔</return>
<example>AF.func("OpenExportDialog", "typeOnly=xlsx;content=asDisplay");</example>
</function>
<function name="OpenDeleteRowsDialog">
<usage>打开删除行对话框</usage>
</function>
<function name="AddHotKey">
<usage>增设快捷键</usage>
<detail>增设快捷键。快捷键将触发HotKey事件</detail>
<para>第一个快捷键,可以是F1至F12、字母、数字、或键的AscII码,也可再加Ctrl、Shift、Alt的组合,以'+'分隔.</para>
<para>可选,第二个快捷键,以此类推.</para>
<example>AF.func("AddHotKey", "F12 \r\n Ctrl+F4 \r\n Ctrl+Shift+S \r\n Alt+5 \r\n Ctrl+32");<br>
分别表示了5个快捷键:F12、Ctrl+F4、Ctrl+Shift+S、Alt+5、Ctrl+空格(空格的AscII码是32)
</example>
<memo>并不是所有键都能用作快捷的,受制于浏览器,您需要逐个测试</memo>
</function>
</category>
</functions>