硕正控件学习记录

最近做项目接触到了很强大的Web套件工具:硕正富文本应用套件,特此记录下学习插件的点滴:

********************* TreeList/FreeForm *********************

1.页面通过xml配置,xml中的table_id对应数据库的表名,col_physical_name对应表中的字段,col_type对应字段的类型。
2.页面加载时执行OnReady方法,在OnEvent方法中判断各种事件的触发。
3.页面加载类型分为TreeList和FreeForm两种,TreeList为列表,通常取AF为id,FreeForm为表单,通常取FM为id。
4.Tab标签页下的方法调用:Tab1为当前table页的id,tab_OrderData为页签的id
  var changeXML = AF.func("Tab1.tab_OrderData.GetChangedXml", "level=2");
5.xml中列的属性,col_type对应的是数据库中字段的类型,而datatype是页面验证的数据类型,通过配置datatype可自动验证数据。
6.配置下拉框数据时,edittype要写成dropdownlist,还要起一个dropdownlistid,在下方dropdownlists处配置数据源。例如:
  <input table_id="tb_serviceReport_info" align="left" col_physical_name="ServiceId" col_type="NVarchar" id="ServiceId" edittype="editabledroptreelist"   droplistid="Drop_ServiceId" LeftText="服务号:" width='2' nullAble="false"/>
  数据源:
  <DropLists>
    <DropList id="Drop_ServiceId" treelist="ServiceDetail.xml" DataCol="ServiceId" DisplayCol="ServiceId"
    isTreeNodeSelectAble="true" />
  </DropLists>

7.TreeList列表在提交时,property中必填key,否则不能提交。
8.TreeList列表在加载数据时,后台table转json的方法中需要传入记录总条数,用来显示分页控件,否则记录只会显示一条。
9.在列表首列加入全选checkbox:AF.func("InsertCol", "0\r\nname=checked;isCheckboxOnly=true");
10.获取选中checkbox的行号(多行号用逗号分割):var checkRowNumbers = AF.func("findAll", "checked=1"); 
11.标签切换:AF.func("SetCurSel", "Tab1 \r\n 1"); 最后那个是切换到第几个标签,从0开始
12.aspx页面文件应该在根目录下一级,如果在文件夹下还有二级文件夹,则在查找条件区的字段时会因找不到路径而报错。
13.搜索区的字段加载不出来的原因是顶部的xmlpath配置不正确,如果是tab页的话,则xmlpath应为主表对应的xml,而非tab页的。
14.自增长的表插入一条数据时返回主键:insert into tb1 values('...'); select @@IDENTITY id 
15.加载列表时,如果有主外键关联的字段,这样配置:
    首先清楚什么是主表、子表:如果有一个用户表,一个性别码表,则性别表为主表,用户表为子表。
    <Col table_id="relation_type" col_main_name="PROVIDER_TYPE" col_physical_name="LBMC" name="PROVIDER_TYPE" col_type="NVarChar" relation="inner" width="150" align="center" editAble="false">供应商类别</Col>
注:①table_id对应下面TableLists中的TableInfo中的id="relation_type",并不是真正的表名。
       ②col_main_name为子表中与主表对应的字段
       ③col_physical_name是主表中存名称的字段,也就是用来显示在页面上的字段。
       ④name为子表中对应主表的字段名。
配置好上面的字段后,再配置两表的关联关系:
<TableLists>
    <TableInfo id="relation_type" table_alias_name="code_provider"  table_physical_name="tbl_si_type"  relation_table_name="TBL_PROVIDER"  main_col="PROVIDER_TYPE" detail_col="CODE" relation="inner join" />
  </TableLists>
注:①id="relation_type"对应上面配置的table_id
       ②table_alias_name不是真正的字段,无关紧要。
       ③table_physical_name是主表的表名
       ④relation_table_name是子表的表名
       ⑤main_col为子表中与主表关联的字段
       ⑥detail_col为主表中与子表关联的字段
       ⑦relation为两表关联的关系,连接可分为:内连接、左连接、右连接
16.数据库在设计表的时候,注意字段不要与关键字重复。
17.可编辑的下拉框:edittype="editabledroptreeList",把editable去掉则为只读。
18.列表混添加混编辑,应该调用tl.AddMuiltTlData方法。
19.Jquery Ajax火狐浏览器返回的result为何是object XmlDocument?因为ajax请求缺少dataType属性。
20.Jquery的dataType包括:
        ①"xml": 返回 XML 文档,可用 jQuery 处理。
        ②"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
        ③"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),           
             所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
        ④"json": 返回 JSON 数据 。
        ⑤"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回
            调函数。
        ⑥"text": 返回纯文本字符串
21.列表删除数据时,提示找不到main_table_name,可能是调用了FreeForm的方法;
22.屏蔽右键:Right_Shield(AF); //屏蔽右键
23.TreeList和FreeForm获取元素的值:
        ①FM:FM.func("GetValue", "字段");
        ②AF:var currentRow = AF.func("GetCurrentRow", "");  AF.func("GetCellData", currentRow + " \r\n 字段");
24.日期控件默认值:defaultvalue="=now()" datatype="date"
25.小数格式:editmask="#,###.0000" datatype="double"
26.插入行:AF.func("InsertRows", "0 \r\n 1");
27.Treelist赋值:
     var curRowNum = AF.func("GetCurrentRow", "");  //获取当前行
     AF.func("SetCellData", curRowNum + " \r\n 字段 \r\n" + 值);  //注意\r\n与值之间不要有空格
28.FreeForm赋值:
     FM.func("SetValue", "字段 \r\n" + 值);  //FreeForm不需要获取行号,\r\n与值之间不要有空格
29.取消行:AF.func("DeleteRows", curRowNum + " \r\n 1");
30.设置元素属性,如隐藏、不可用、不为空等:AF.func("SetObjectProp", "ID \r\n visible \r\n false");
31.获取xml的时候要写level=2,否则后台找不到NewRow还是ModifyRow,如:AF.func("GetChangedXML", "level=2");
32.加载数据:
     TreeList:AF.func("bBar.SetObjectProp", "ID0\r\n dataURL \r\n" + data + "\r\n mode=asynch");
     FreeForm:FM.func("Load", data);
33.加载列表数据,并且加载分页数据:
     var h = AF.func("GetHandle", "");
     AF.func("bBar.BindPager", h + "\r\n ID0");
     AF.func("bBar.SetObjectProp", "ID0\r\n dataURL \r\n" + data + "\r\n mode=asynch");
34.TreeList  GetChangedXML  获取数据几种方式:   
可选, 可以有如下的选项,相互以分号分隔:
level - 级别号,可以是0(默认)、1、2、3,其含义分别为:
  0 - 级别0,生成当前全部、最新内容(不包括修改前的原始内容);
  1 - 级别1,仅生成被修改过的单元格的内容(包括原始内容);
  2 - 级别2,在级别1的基础上,增加被修改过单元的整行内容;
  3 - 级别3,内容包含所有行、所有列、修改前后的内容;
isIgnoreChange - true/false, 仅用于Level=0. true表示不管内容是否被修改过,始终生成XML; false表示除非内容被修改过,否则返回空串. 默认是false;
startRow - 开始行,默认是0;
endRow - 结束行,默认是-1,-1表示最后行;
DateFormat - 日期的格式,默认是'%Y.%m.%d',可参见公共内容中now( )函数的参数;
 
********************* Report *********************
1.report定义:  <script>insertReport('AF', 'workMode=inputDSRunTime')</script>
   (注意:报表分为好几种模式,只有在inputDSRunTime模式下才可以获取由数据源绑定的和数据,为操作数据库做准备)
2.report报表绑定数据分为两种:
          1:data绑定,主要用于数据库中的主表数据。
          2:dataRow绑定,主要用于数据库中的明细列表的显示。
3.report获取数据的方式范围两种:
          1:对于数据绑定为data方式的获取方式 :
                 (1) var mainchangeXML = AF.func("CollectXML", "BackColor=#FEFEFE"); //通过背景颜色获取主表的XML
                 (2) var mainchangeXML = AF.func("CollectXML", "别名"); //通过别名获取主表的XML
          2: 对于数据绑定为data方式的获取方式 :
                 (1) var childChangeXML = AF.func("GetChangedXML", "ds=ds1;level=2"); //获取明细表XML  ds=ds1表示当前
                       绑定Data为ds1的XML数据
4.report获取修改过内容的单元格函数  GetChangedCells  (注意:ResetChanged 和  GetChangedCells要一起使用,
   否则会达不到想要的效果,其中ResetChanged函数一般用在硕正  OnReady函数中)   例:
           1: AF.func("ResetChanged", ""); //合并修改内容,为以后调用 GetChangedCells( ) 作准备.
           2: var mainchangeCells = AF.func("GetChangedCells", ""); //获取修改过内容的单元格   和ResetChanged一起使用   
5.report绑定数据:
           AF.func("setsource", "ds0 \r\n " + data);    //data为Json数据
6.report绑定数据源: calc函数:此函数用在setsource后,否则不会显示数据,另外在执行了calc函数之后,在执行 insertRows
   函数会达不到效果,所以一定要在执行完calc函数之后在用其他函数。例:
            AF.func("calc", ""); //执行报表的计算,包括数据源的取数填充
7.report定义事件函数:SubscribeEvent   事件要先定义才能在硕正OnEvent中使用,这里不如treelist和freeform强大   例:
            AF.func("SubscribeEvent", "SelChanged \r\n Clicked \r\n DblClicked \r\n EditChanged \r\n Editing");
 
posted @ 2014-11-24 21:49  Jackie Hao  阅读(5673)  评论(0编辑  收藏  举报