• 硕正控件学习记录


    最近做项目接触到了很强大的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 name=checked;isCheckboxOnly=true");
    10.获取选中checkbox的行号(多行号用逗号分割):var checkRowNumbers = AF.func("findAll", "checked=1"); 
    11.标签切换:AF.func("SetCurSel", "Tab1 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 + " 字段");
    24.日期控件默认值:defaultvalue="=now()" datatype="date"
    25.小数格式:editmask="#,###.0000" datatype="double"
    26.插入行:AF.func("InsertRows", "0 1");
    27.Treelist赋值:
         var curRowNum = AF.func("GetCurrentRow", "");  //获取当前行
         AF.func("SetCellData", curRowNum + " 字段 " + 值);  //注意 与值之间不要有空格
    28.FreeForm赋值:
         FM.func("SetValue", "字段 " + 值);  //FreeForm不需要获取行号, 与值之间不要有空格
    29.取消行:AF.func("DeleteRows", curRowNum + " 1");
    30.设置元素属性,如隐藏、不可用、不为空等:AF.func("SetObjectProp", "ID visible false");
    31.获取xml的时候要写level=2,否则后台找不到NewRow还是ModifyRow,如:AF.func("GetChangedXML", "level=2");
    32.加载数据:
         TreeList:AF.func("bBar.SetObjectProp", "ID0 dataURL " + data + " mode=asynch");
         FreeForm:FM.func("Load", data);
    33.加载列表数据,并且加载分页数据:
         var h = AF.func("GetHandle", "");
         AF.func("bBar.BindPager", h + " ID0");
         AF.func("bBar.SetObjectProp", "ID0 dataURL " + data + " 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 " + data);    //data为Json数据
    6.report绑定数据源: calc函数:此函数用在setsource后,否则不会显示数据,另外在执行了calc函数之后,在执行 insertRows
       函数会达不到效果,所以一定要在执行完calc函数之后在用其他函数。例:
                AF.func("calc", ""); //执行报表的计算,包括数据源的取数填充
    7.report定义事件函数:SubscribeEvent   事件要先定义才能在硕正OnEvent中使用,这里不如treelist和freeform强大   例:
                AF.func("SubscribeEvent", "SelChanged Clicked DblClicked EditChanged Editing");
     
  • 相关阅读:
    Matlab中save与load函数的使用
    bsxfun函数
    matlab中nargin函数的用法
    Leetcode 188. Best Time to Buy and Sell Stock IV
    Leetcode 123. Best Time to Buy and Sell Stock III
    leetcode 347. Top K Frequent Elements
    Leetcode 224. Basic Calculator
    Leetcode 241. Different Ways to Add Parentheses
    Leetcode 95. Unique Binary Search Trees II
    Leetcode 96. Unique Binary Search Trees
  • 原文地址:https://www.cnblogs.com/Jackie-sky/p/4119706.html
Copyright © 2020-2023  润新知