jQuery下最好用的Grid控制項是什麼

來源:互聯網
上載者:User

 發現了Flexigrid,其Ext風格的外觀,簡潔的代碼,

強大的功能都深深地吸引了我。於是就用它了。

雖然它文檔欠缺,有個比較有用的Demo可以參考,

在CodeProject有一篇介紹的文章已經非常細緻了:http://www.codeproject.com/KB/aspnet/MVCFlexigrid.aspx

大家直接存取查看即可。

雖然FlexiGrid的外觀已然不錯,但是灰色的預設風格不大喜歡,所以我把它改成藍色了。

HTML結構導致比較中規中矩的,即每個部分都有單獨的div容器包裹,功能比較獨立也可以通過屬性設定是否顯示,有一點需要注意的就是

表頭和表格實際的內容不在一個容器中,這樣可以達到下拉滾動時表頭固定,而在橫向滾動時同步表頭滾動。

修改CSS過程繁雜而漫長,但最終的效果自己還是非常滿意,這裡就不做分析了,因為真的很多,所以就略過了吧。(代碼統一在下節下載)

先來看看它的功能有哪些吧?官方的功能列表

  • Resizable columns  (重設列寬,酷)
  • Resizable height and width  (重設表格大小,這個好像實際應用的不多)
  • Sortable column headers  (改變列的順序)
  • Cool theme (很酷的風格,現在就更酷了)
  • Can convert an ordinary table  (可以格式化一個普通的表格)
  • Ability to connect to an ajax data source (XML and JSON[new])  (支援多種資料格式)
  • Paging (支援分頁)
  • Show/hide columns (支援顯示隱藏列) 
  • Toolbar (new)  (支援工具列)
  • Search (new)  (支援快速檢索)
  • Accessible API  (便於使用的API)
  • Many more (其他。白搭)

還是和其他控制項一下,第一步來看下參數吧,預設參數比較多,大多的參數都比較有用

02 // 引用預設屬性 

03         p = $.extend({

04             height: 200,//flexigrid外掛程式的高度,單位為px 

05             width:'auto', //寬度值,auto表示根據每列的寬度自動計算,在IE6下建議設定具體值否則會有問題 

06             striped:true, //是否顯示斑紋效果,預設是奇偶互動的形式 

07             novstripe:false,//沒用過這個屬性

08             minwidth: 30,//列的最小寬度 

09             minheight: 80,//列的最小高度 

10             resizable:false, //resizable table是否可伸縮 

11             url:false, //ajax url,ajax方式對應的url地址 

12             method:'POST', // data sending method,資料發送方式 

13             dataType:'json', // type of data loaded,資料載入的類型,xml,json 

14           errormsg:'發生錯誤', //錯誤提升資訊 

15             usepager:false, //是否分頁 

16             nowrap:true, //是否不換行 

17             page: 1,//current page,預設當前頁 

18             total: 1,//total pages,總頁面數 

19             useRp:true, //use the results per page select box,是否可以動態設定每頁顯示的結果數

20             rp: 25,// results per page,每頁預設的結果數 

21             rpOptions: [10, 15, 20, 25, 40, 100],//可選擇設定的每頁結果數 

22             title:false, //是否包含標題 

23             pagestat:'顯示記錄從{from}到{to},總數 {total} 條',//顯示當前頁和總頁面的樣式 

24             procmsg:'正在處理資料,請稍候 ...',//正在處理的提示資訊 

25             query:'', //搜尋查詢的條件 

26             qtype:'', //搜尋查詢的類別 

27             qop:"Eq", //搜尋的操作符 

28             nomsg:'沒有合格記錄存在',//無結果的提示資訊 

29             minColToggle: 1,//允許顯示的最小列數 

30             showToggleBtn:true, //是否允許顯示隱藏列,該屬性有bug設定成false點擊頭指令碼報錯。 

31             hideOnSubmit:true, //是否在回調時顯示遮蓋 

32             showTableToggleBtn:false, //是否顯示【顯示隱藏Grid】的按鈕  

33             autoload:true, //自動載入,即第一次發起ajax請求 

34             blockOpacity: 0.5,//透明度設定 

35             onToggleCol:false, //當在行之間轉換時,可在此方法中重寫預設實現,基本無用 

36             onChangeSort:false, //當改變排序時,可在此方法中重寫預設實現,自行實現用戶端排序 

37             onSuccess:false, //成功後執行 

38             onSubmit:false, // 調用自訂的計算函數,基本沒用         

39             //Style

40             gridClass:"bbit-grid"//樣式           

41         }, p);

 

另外的兩個屬性colModel,buttons 不是預設屬性,內容說明如下

colModel : 列定義數組  

一個數組,數組的元素說明如下
colModel 參數說明:
display :顯示名稱
必須設定 ,類型:string, 預設值:無
name :欄位名稱
必須設定 ,類型:string,預設值:無
width :寬度
必須設定 , 類型:string ,預設值:無
sortable:是否可排序
類型:boolen , 預設值:false
process:處理常式
類型:function ,可格式化儲存格
hide :是否隱藏
類型: boolen,預設值:false

buttons : 工具列Button定義  

一個數組,數組的元素說明如下
buttons 參數說明:
name :Botton的標識
類型:string , 預設值:無
bclass :樣式
類型:boolen,預設值:無
onpress :當button被點擊時觸發的事件
接受button的name為第一個參數,Grid為第二個參數的一個function
separator :是否分隔字元
和前面四個屬性互斥,當這個屬性設定為True時,輸出一個分隔字元號,不是一個button 預設值:false

參數說明完畢,至於如何使用,那麼請參考文中介紹的那篇文章吧?

雖然Flexigrid已然算是優秀,但是問題還是有?比如:

1:如果在列首添加checkbox列(預設不支援),

2:如何給行附加事件(如右鍵或雙擊)或者在最後列添加操作列?同時擷取該列的資料?

3: 如何能夠相容 jQuery 1.3+?(預設不相容)

4:如何改善效能問題(IE的指令碼執行能力實在是可憐,特別在IE6下,當行列多時,總是有2-3秒的停滯)

5:如何讓某列不參與Toggle?

…………………………

這些我將在下篇分析如何?上述問題.都是我在實際項目中所解決的問題,修改列表

1:修改每次都要擷取記錄數的bug,如果返回的記錄數小於0,即沒有總擷取記錄數,則使用上一次的擷取到的記錄數
2:showToggleBtn 設定為false 時,點擊頭報錯的bug(未修改)
3:修改提示資訊為中文 
4:修改預設樣式,提供藍色皮膚
5:Toolbar中的button增加displayname;
6:快速檢索增加Regex驗證
7:增加選擇列和全選功能 ,修改預設行點擊選中為False。
8:可從外部整合行事件-樣本:整合右鍵功能
9:修改當Jquery升級到1.3.1後的bug
10: 添加Resize方法
11:最佳化Table的動態添加方式
12:修正了Json資料的row為null時指令碼報錯的問題
13 :新增getCheckedRows方法擷取Grid中的選中行,返回是行主鍵的數組 

14: 添加grid擷取Option的方法
15
分頁的樣式略作調整,給按鈕加上title
16
新增列不參與toggle,只需配置列的toggle=false
修改了添加資料的邏輯,提高了效能 60% 左右

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.