碩正控件學習記錄


最近做項目接觸到了很強大的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");
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM