jqGrid 使用初步印象

來源:互聯網
上載者:User

jqGrid 使用初步印象

 

最近由於工作需要,在網上瞭解了幾種分頁的js外掛程式,初步選定 jqGrid。jqGrid 是 jQuery 外掛程式,功能比較齊全,增、刪、改、查、分頁、排序等操作的介面全部都有。當然了,背景 java 程式需要自己寫。

本來最初找到的是 Flexgrid,介面很漂亮,但是它不包含增、刪、改的介面,需要自己另寫,麻煩。Flexgrid 首頁上說計劃做,等它做好再評估吧。

 

jqGrid 使用可以簡化 Web 開發的介面編碼,可用於靜態頁面、各類動態網頁面,包括 php/jsp/asp。我們習慣於把所有錄入驗證都放在後台 java 代碼中做,因此整合起來相當順手。

 

需要注意的是,jqGrid 首頁是 http://www.trirand.com/blog/, 不是 http://www.trirand.com/,那是一個公司,掛羊頭賣狗肉。另 Flexgrid 首頁是 http://www.flexigrid.info/.

 

jqGrid 使用偏重於“定義”。也就是說,你希望你的頁面上,有幾列資料,每列多寬,什麼顏色,哪些列可編輯,等等,逐一寫好規則, jqGrid 自己會使用 javascript/css/html 動態產生一個頁面。好處自然是省去排版、並且介面風格一致。

 

jqGrid 前後台(HTML 為前台,php/jsp/servlet/asp 為後台)通訊,是頁面發送 HTTP request(POST/GET),然後後台返回 xml/json/txt 之類的資料。

使用時 javascript 庫在頁面中順序是: jquery, jquery-ui, grid.locale-en.js, jquery.jqGrid.min.js, 例如:


<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>

<script src="js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>

<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>

<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>


 

jqGrid 文檔不可下載。這點很讓人不爽。

 

以下是一些使用感受。

 

jqGrid 的 XML 格式通訊方式,在 ie8,chrome,safari 中都有問題,可能是我電腦中安裝的是 windows7 + ie8, 沒有安裝單獨的微軟 xml 解析器,也有可能是我沒有找到竅門。xml 格式在 firefox/opera 中正常。

json 格式則在 ie8/firefox/chrome/safari/opera 中都正常。

 

另一點需要說明,jqGrid 的查詢、翻頁使用 json/xml 作為回應,但是增、刪、改的回應則是可以自訂的,只需要在相應的 ajax 完成後的回呼函數 afterSubmit 中,寫明是成功還是失敗。比如:

return [true,'','created_new_data_id'];//成功時返回這個

return [false,'出錯了,xxx',''];//失敗時返回這個,出錯資訊可以從後台顯示到頁面。

 

這個在很多網上說明中,都沒有提到。而且,不寫回呼函數 afterSubmit ,預設是成功。

 

另一個比較妖的是,我需要在頁面最後寫:

 

jQuery.ajaxSetup({

dataType: "json"

});

 

意思是當前頁面所有用到 jQuery 的 Ajax 外掛程式的,都用 json 通訊資料格式。而 jqGrid 的文檔中根本沒有提到這一點。網上的資料也隻字不提。很奇怪。

 

我們使用 Apache Velocity 來替代 JSP ,這裡有一個 jqGrid json 資料格式例子,供大家參考:

1. 資料查詢用 velocity 模板

#set( $logic_page_index = ${pagingInfo.pageIndex} + 1 )

 

{

"page":"$logic_page_index",

"total":${pagingInfo.totalPageCount},

"records":"${pagingInfo.totalRecordCount}",

"rows":[

#foreach($rowData in ${rows})

{"id":"${rowData.key}","cell":[

#foreach($col in $rowData.cols)

"$!col"

#if($velocityCount < $rowData.cols.size())

,

#end

#end

]}

#if($velocityCount < $rows.size())

,

#end

#end 

 

 

]}

 

2. 資料增、刪、改所用 velocity 模板

{

"success_flag":"$success_flag",

"result_message":"${result_message}",

"new_id":"${new_id}"

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.