slickgrid插件


來自  besley
 

前言:在前篇文章中,總結了SlickGrid 的基本方法,SlickGrid其功能擴展主要靠插件技術;這也是體現出作者Melibman 架構設計的優秀之處。本文列出了Master版本提供的插件以外,另外特意列出了在項目中添加的新的插件,供SlickGrid的開發人員參考(目前會在分支版本中提供,並未合並到SlickGrid的主版本中去)。

 

1. 基本插件列表

 

 

[html]  view plain  copy
 
  1. 插件名稱                               說明  
  2. //列單元格嵌入編輯器  
  3. TextEditor                             文本框編輯器,  
  4. IntegerEditor                          數字編輯器  
  5. DateEditor                             日期編輯器,  
  6. DropDownEditor                           下拉框編輯器,  
  7. YesNoSelectEditor                      YesNo選擇器  
  8. CheckboxEditor                           復選框編輯器  
  9. TextButtonEditor                       文本框按鈕編輯器,  
  10. PercentCompleteEditor                    完成百分比編輯器  
  11. LongTextEditor                           長文本編輯器  
  12. SelectCellEditor                       單元格選中編輯器  
  13.    
  14. //擴充插件  
  15. slick.autotooltips                        自動提示插件  
  16. slick.cellcopymanager                     單元格復制管理器  
  17. slick.cellrangedecorator               范圍內單元格裝飾  
  18. slick.cellrangeselector                范圍單元格選擇器  
  19. slick.cellselectionmodel               單元格選定模型  
  20. slick.checkboxselectcolumn             復選框列格式插件  
  21. slick.dropdownlistcolumn               下拉框格式插件  
  22. slick.headerbuttons                    標題下拉按鈕  
  23. slick.rowmovemanager                   行移動管理器  
  24. slick.rowselectionmodel                行選擇模型  

 

2.   插件注冊及使用

2.1  單元格嵌入編輯器

 

[javascript]  view plain  copy
 
  1. //在初始化列字段時候定義  
  2. var columnsProduct = [  
  3.  { id: "id", name: "產品編號", field:"ID"},  
  4.  { id: "ProductName", name:"產品名稱", field:"ProductName",editor:Slick.Editors.TextButton },  
  5.  { id: "UnitPrice", name:"單價", field:"UnitPrice",editor: Slick.Editors.Text },  
  6. { id: "IsLuxury", name:"奢侈品?", field:"IsLuxury",editor:Slick.Editors.Checkbox, formatter:Slick.Formatters.Checkmark },  
  7.  { id: "ModifiedDate", name:"修改日期", field:"ModifiedDate", fieldType: "datetime", editor: Slick.Editors.Date },  
  8.  { id: "Notes", name:"備注", field:"Notes", editor: Slick.Editors.LongText}  
  9. ];  

2.2 添加div等控件 Editors、formatter

 

[javascript]  view plain  copy
 
  1. //columns中加editor: Slick.Editors.Text 或者 加formatter:colFormatter  
  2.   
  3. //字體描色  
  4. functioncolFormatter(row, cell, value, columnDef, dataContext) {  
  5.     if(dataContext.iscol == true&& value!="") {  
  6.         return"<div style='color:red; font-weight:bold;'>"+ value +"</div>";  
  7.     }  
  8.     else  
  9.        returnvalue;  
  10. }  
  11.   
  12.   
  13. //或者 加  
  14. //formatter:colFormatter  
  15. //字體描色  
  16. functioncolFormatter(row, cell, value, columnDef, dataContext) {  
  17.     if(dataContext.iscol == true&& value!="") {  
  18.         return"<div style='color:red; font-weight:bold;'>"+ value +"</div>";  
  19.     }  
  20.     else  
  21.         returnvalue;  
  22. }  

2.3  grid注冊下拉框控件dropdownlist

 

[javascript]  view plain  copy
 
  1. varmtrPartJson = [];  
  2. varmtrPart;  
  3. //部位下拉框  
  4. functionaddMtrPartList() {  
  5.     ajaxGet('/WebFramework/Sampric/BindMtrPart/','',function(result) {  
  6.      if(result != null) {  
  7.         mtrPartJson = result;  
  8.       mtrPart = newSlick.DropDownListColumn({  
  9.             id: "part",name: "部位", field:"part",width: 82, dataSource: mtrPartJson  
  10.         });  
  11.         bomColumns.splice(4, 1,mtrPart.getColumnDefinition());  
  12.         }  
  13.     });  
  14. }  
  15.   
  16. //注冊部位下拉框  
  17. gridBom.registerPlugin(mtrPart);  
  18.   
  19. //界面元素渲染后,綁定事件  
  20. $("#slt_part").bind("change",onItemChanged);  
  21.   
  22. //部位下拉框改變Item、維護頁彈出  
  23. varonItemChanged =function (e, args) {  
  24.     if ($(this).val()=="-1") {  
  25.         alert("彈出窗口,添加新選項...");  
  26.         $("#slt_part").append('<option value=10>My option</option>');  
  27.         //$(".editor-select").append('<optionvalue=10>My option</option>');  
  28.     }  
  29.     else {  
  30.         var item = gridViewBom.getItemByIdx(selectedRowIndex);  
  31.         item.part = $(this).val();  
  32.         gridViewBom.updateItem(item.ID, item);  
  33.         gridBom.updateRow(selectedRowIndex);  
  34.     }  
  35. };  


2.4  注冊復選框列

 

[javascript]  view plain  copy
 
  1.  //添加復選框列  
  2.  var checkboxProduct = new Slick.CheckboxSelectColumn({  
  3.      cssClass: "slick-cell-checkboxsel"  
  4.  });  
  5.  columnsProduct.splice(0, 0,checkboxProduct.getColumnDefinition());  
  6.   
  7.  //注冊復選框  
  8. gridProduct.registerPlugin(checkboxProduct);  

 

2.5 注冊標題下拉框

 

[javascript]  view plain  copy
 
  1. //注冊HeaderMenu  
  2. var headerMenuPlugin = new Slick.Plugins.HeaderMenu({ "dataview": dataViewProduct });  
  3.   
  4. gridProduct.registerPlugin(headerMenuPlugin);  


 

3. 擴展控件

3.1 擴展控件列表

 

[html]  view plain  copy
 
  1.     控件名稱                              說明  
  2. slick.columnpicker                           右鍵列選擇器  
  3. slick.filter                              過濾器方法封裝  
  4. slick.filterdialog                           過濾器對話框  
  5. slick.pager                               客戶端分頁  
  6. slick.pagersvr                               服務端分頁  

 

3.2 擴展控件使用

1)列右鍵選擇器columnpicker

 

[javascript]  view plain  copy
 
  1. //列標題控件,排序及過濾  
  2. var columnpicker = new Slick.Controls.ColumnPicker(columnsProduct, gridProduct, dataViewProduct,optionsProduct);  
  3. columnpicker.onDataColumnSort.subscribe(onDataColumnPickerSortEvent);  


 

 

 

2)分頁控件pager

 

[javascript]  view plain  copy
 
  1. var rmtPageInfo = {};  
  2. rmtPageInfo.pageNum = 0;  
  3. rmtPageInfo.pageSize = 100;  
  4. rmtPageInfo.totalRowsCount =10000;      //先默認,后服務端計算返回  
  5. rmtPageInfo.totalPagesCount = 20;        //先默認,后服務端計算返回  
  6.   
  7. //注冊分頁控件  
  8. var pager = newSlick.Controls.PagerSvr(dataViewProduct, gridProduct, rmtPageInfo, $("#myPagerProduct"));  
  9. pager.onDataPaged.subscribe(onDataPagedEvent);  

3)過濾器filter

 

[javascript]  view plain  copy
 
  1. //打開過濾器彈出框  
  2. var filterDialog = window.open('../scripts/slickgrid/controls/slick.filterdialog.html?colDefName=colDefEPProduct', 'myfilterdialog','height=500,width=600,left=150,top=100');  

 

 

 
4. 總結:
Web開發人員在熟知SlickGrid的基礎架構和功能后,可以利用插件技術靈活實現自有業務需求的功能;此外,SlickGrid的各種特性在Melibman的主版本中持續開發完善,相信國內的開發人員也會逐漸了解SlickGrid,本文中提到的新插件都是為實際項目需求進行開發實現的,個別基礎功能的插件在測試后,會在分支版本中發布出來。

 


免責聲明!

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



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