1. 程式人生 > >關於JQGrid使用引數介紹

關於JQGrid使用引數介紹

jqGrid安裝很簡單,只需把相應的css、js檔案加入到頁面中即可。 
按照官網文件:

/myproject/css/ 
            ui.jqgrid.css 
            /ui-lightness/ 
                  /images/ 
                  jquery-ui-1.7.2.custom.css

 /myproject/js/ 
            /i18n/ 
                  grid.locale-bg.js 
                  list of all language files 
                  …. 
            Changes.txt 
            jquery-1.3.2.min.js 
            jquery.jqGrid.min.js

在頁面中寫法:

Java程式碼 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">  

<head>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

<title>My First Grid</title>  

<link rel="stylesheet" type="text/css" media="screen" href="css/ui-lightness/jquery-ui-1.7.1.custom.css" />  

<link rel="stylesheet" type="text/css" media="screen" href="js/src/css/ui.jqgrid.css" />  

<link rel="stylesheet" type="text/css" media="screen" href="js/src/css/jquery.searchFilter.css" />  

<style>  

html, body {  

   margin: 0;  

    padding: 0;  

    font-size: 75%;  

}  

</style>  

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

<script src="js/src/grid.loader.js" type="text/javascript"></script>  

</head>  

<body>  

...  

</body>  

</html>  

需要說明的是,jquery-ui的字型大小與jqgrid字型大小不一致,故需要在頁面上在加上一段 
style來指定頁面上文字大小。

jqGrid面板

從3.5版本開始,jqGrid完全支援jquery UI的theme。我們可以從http://jqueryui.com/themeroller/下載我們所需要的theme。當然,你也可以編輯自己的theme。jqGrid 
也並不需要把所有的css檔案都引入進來,只需匯入核心css檔案“ui.theme.css ” 以及“ui.core.css”即可,檔案位於目錄development-bundle/themes下。

jqGrid原理

jqGrid是典型的B/S架構,伺服器端只是提供資料管理,客戶端只提供資料顯示。換句話說,jqGrid可以以一種更加簡單的方式來展現你資料庫的資訊,而且也可以把客戶端資料傳回給伺服器端。 
對於jqGrid我們所關心的就是:必須有一段程式碼把一些頁面資訊儲存到資料庫中,而且也能夠把響應資訊返回給客戶端。jqGrid是用ajax來實現對請求與響應的處理。

jqGrid引數

名稱

型別

描述

預設值

可修改

url

string

獲取資料的地址

datatype

string

從伺服器端返回的資料型別,預設xml。可選型別:xml,local,json,jsonnp,script,xmlstring,jsonstring,clientside

mtype

string

ajax提交方式。POST或者GET,預設GET

colNames

Array

列顯示名稱,是一個數組物件

colModel

Array

常用到的屬性:name 列顯示的名稱;index 傳到伺服器端用來排序用的列名稱;width 列寬度;align 對齊方式;sortable 是否可以排序

pager

string

定義翻頁用的導航欄,必須是有效的html元素。翻頁工具欄可以放置在html頁面任意位置

rowNum

int

在grid上顯示記錄條數,這個引數是要被傳遞到後臺

rowList

array

一個下拉選擇框,用來改變顯示記錄數,當選擇時會覆蓋rowNum引數傳遞到後臺

sortname

string

預設的排序列。可以是列名稱或者是一個數字,這個引數會被提交到後臺

viewrecords

boolean

定義是否要顯示總記錄數

caption

string

表格名稱

[a1] 

object

對ajax引數進行全域性設定,可以覆蓋ajax事件

null

[a2] 

object

對ajax的select引數進行全域性設定

null

altclass

String

用來指定行顯示的css,可以編輯自己的css檔案,只有當altRows設為 ture時起作用

ui-priority-secondary

altRows

boolean

設定表格 zebra-striped 值

autoencode

boolean

對url進行編碼

false

autowidth

boolean

如果為ture時,則當表格在首次被建立時會根據父元素比例重新調整表格寬度。如果父元素寬度改變,為了使表格寬度能夠自動調整則需要實現函式:setGridWidth

false

cellLayout

integer

定義了單元格padding + border 寬度。通常不必修改此值。初始值為

5

cellEdit

boolean

啟用或者禁用單元格編輯功能

false

cellsubmit

String

定義了單元格內容儲存位置

‘remote’

cellurl

String

單元格提交的url

空值

datastr

String

xmlstring或者jsonstring

空值

deselectAfterSort

boolean

只有當datatype為local時起作用。當排序時不選擇當前行

true

direction

string

表格中文字的顯示方向,從左向右(ltr)或者從右向左(rtr)

ltr

editurl

string

定義對form編輯時的url

空值

emptyrecords

string

當返回的資料行數為0時顯示的資訊。只有當屬性 viewrecords 設定為ture時起作用

ExpandColClick

boolean

當為true時,點選展開行的文字時,treeGrid就能展開或者收縮,不僅僅是點選圖片

true

ExpandColumn

string

指定那列來展開tree grid,預設為第一列,只有在treeGrid為true時起作用

空值

[a3] 

boolean

當為true時,會在翻頁欄之上增加一行

false

forceFit

boolean

當為ture時,調整列寬度不會改變表格的寬度。當shrinkToFit 為false時,此屬性會被忽略

false

gridstate

string

定義當前表格的狀態:'visible' or 'hidden'

visible

gridview

boolean

構造一行資料後新增到grid中,如果設為true則是將整個表格的資料都構造完成後再新增到grid中,但treeGrid, subGrid, or afterInsertRow 不能用

false

height

mixed

表格高度,可以是數字,畫素值或者百分比

150

hiddengrid

boolean

當為ture時,表格不會被顯示,只顯示錶格的標題。只有當點選顯示錶格的那個按鈕時才會去初始化表格資料。

false

hidegrid

boolean

啟用或者禁用控制表格顯示、隱藏的按鈕,只有當caption 屬性不為空時起效

true

hoverrows

boolean

當為false時mouse hovering會被禁用

false

jsonReader

array

描述json 資料格式的陣列

lastpage

integer

只讀屬性,定義了總頁數

0

lastsort

integer

只讀屬性,定義了最後排序列的索引,從0開始

0

loadonce

boolean

如果為ture則資料只從伺服器端抓取一次,之後所有操作都是在客戶端執行,翻頁功能會被禁用

false

loadtext

string

當請求或者排序時所顯示的文字內容

Loading....

loadui

string

當執行ajax請求時要幹什麼。disable禁用ajax執行提示;enable預設,當執行ajax請求時的提示; block啟用Loading提示,但是阻止其他操作

enable

multikey

string

只有在multiselect設定為ture時起作用,定義使用那個key來做多選。shiftKeyaltKeyctrlKey

空值

multiboxonly

boolean

只有當multiselect = true.起作用,當multiboxonly 為ture時只有選擇checkbox才會起作用

false

multiselect

boolean

定義是否可以多選

false

multiselectWidth

integer

當multiselect為true時設定multiselect列寬度

20

page

integer

設定初始的頁碼

1

pagerpos

string

指定分頁欄的位置

center

pgbuttons

boolean

是否顯示翻頁按鈕

true

pginput

boolean

是否顯示跳轉頁面的輸入框

true

pgtext

string

當前頁資訊

prmNames

array

Default valuesprmNames: {page:“page”,rows:“rows”, sort: “sidx”,order: “sord”, search:“_search”, nd:“nd”, npage:null} 當引數為null時不會被髮到伺服器端

none

postData

array

此陣列內容直接賦值到url上,引數型別:{name1:value1…}

空array

reccount

integer

只讀屬性,定義了grid中確切的行數。通常情況下與records屬性相同,但有一種情況例外,假如rowNum=15,但是從伺服器端返回的記錄數是20,那麼records值是20,但reccount值仍然為15,而且表格中也只顯示15條記錄。

0

recordpos

string

定義了記錄資訊的位置: left, center, right

right

records

integer

只讀屬性,定義了返回的記錄數

none

recordtext

string

顯示記錄數資訊。{0} 為記錄數開始,{1}為記錄數結束。viewrecords為ture時才能起效,且總記錄數大於0時才會顯示此資訊

resizeclass

string

定義一個class到一個列上用來顯示列寬度調整時的效果

空值

rowList

array

一個數組用來調整表格顯示的記錄數,此引數值會替代rowNum引數值傳給伺服器端。

[]

rownumbers

boolean

如果為ture則會在表格左邊新增一列,顯示行順序號,從1開始遞增。此列名為'rn'.

false

rownumWidth

integer

如果rownumbers為true,則可以設定column的寬度

25

savedRow

array

只讀屬性,只用在編輯模式下儲存資料

空值

scroll

boolean

建立一個動態滾動的表格,當為true時,翻頁欄被禁用,使用垂直滾動條載入資料,且在首次訪問伺服器端時將載入所有資料到客戶端。當此引數為數字時,表格只控制可見的幾行,所有資料都在這幾行中載入

false

scrollOffset

integer

設定垂直滾動條寬度

18

scrollrows

boolean

當為true時讓所選擇的行可見

false

selarrrow

array

只讀屬性,用來存放當前選擇的行

array

selrow

string

只讀屬性,最後選擇行的id

null

shrinkToFit

boolean

此屬性用來說明當初始化列寬度時候的計算型別,如果為ture,則按比例初始化列寬度。如果為false,則列寬度使用colModel指定的寬度

true

sortable

boolean

是否可排序

false

sortname

string

排序列的名稱,此引數會被傳到後臺

空字串

sortorder

string

排序順序,升序或者降序(asc or desc)

asc

subGrid

boolean

是否使用suggrid

false

subGridModel

array

subgrid模型

array

subGridType

mixed

如果為空則使用表格的dataType

null

subGridUrl

string

載入subgrid資料的url,jqGrid會把每行的id值加到url中

空值

subGridWidth

integer

subgrid列的寬度

20

toolbar

array

表格的工具欄。陣列中有兩個值,第一個為是否啟用,第二個指定工具欄位置(相對於body layer),如:[true,”both”] 。工具欄位置可選值:“top”,”bottom”, “both”. 如果工具欄在上面,則工具欄id為“t_”+表格id;如果在下面則為 “tb_”+表格id;如果只有一個工具欄則為 “t_”+表格id

[false,'']

totaltime

integer

只讀屬性,計算載入資料的時間。目前支援xml跟json資料

0

treedatatype

mixed

資料型別,通常情況下與datatype相同,不會變

null

treeGrid

boolean

啟用或者禁用treegrid模式

false

treeGridModel

string

treeGrid所使用的方法

Nested

treeIcons

array

樹的圖示,預設值:{plus:'ui-icon-triangle-1-e',minus:'ui-icon-triangle-1-s',leaf:'ui-icon-radio-off'}

treeReader

array

擴充套件表格的colModel且加在colModel定義的後面

tree_root_level

numeric

r oot元素的級別,

0

userData

array

從request中取得的一些使用者資訊

array

userDataOnFooter

boolean

當為true時把userData放到底部,用法:如果userData的值與colModel的值相同,那麼此列就顯示正確的值,如果不等那麼此列就為空

false

viewrecords

boolean

是否要顯示總記錄數

false

viewsortcols

array

定義排序列的外觀跟行為。資料格式:[false,'vertical',true].第一個引數是說,是否都要顯示排序列的圖示,false就是隻顯示 當前排序列的圖示;第二個引數是指圖示如何顯示,vertical:排序圖示垂直放置,horizontal:排序圖示水平放置;第三個引數指單擊功 能,true:單擊列可排序,false:單擊圖示排序。說明:如果第三個引數為false則第一個引數必須為ture否則不能排序

width

number

如果設定則按此設定為主,如果沒有設定則按colModel中定義的寬度計算

none

xmlReader

array

對xml資料結構的描述

Jqgrid學習 -------ColModel API

ColModel 是jqGrid裡最重要的一個屬性,設定表格列的屬性。

屬性

資料型別

備註

預設值

align

string

left, center, right.

left

classes

string

設定列的css。多個class之間用空格分隔,如:'class1 class2' 。表格預設的css屬性是ui-ellipsis

empty string

datefmt

string

”/”, ”-”, and ”.”都是有效的日期分隔符。y,Y,yyyy 年YY, yy 月m,mm for monthsd,dd 日.

ISO Date (Y-m-d)

defval

string

查詢欄位的預設值

editable

boolean

單元格是否可編輯

false

editoptions

array

編輯的一系列選項。{name:’__department_id’,index:’__department_id’,width:200,editable:true,edittype:’select’,editoptions: {dataUrl:”${ctx}/admin/deplistforstu.action”}},這個是演示動態從伺服器端獲取資料。

empty

editrules

array

編輯的規則{name:’age’,index:’age’, width:90,editable:true,editrules: {edithidden:true,required:true,number:true,minValue:10,maxValue:100}},設定 年齡的最大值為100,最小值為10,而且為數字型別,並且為必輸欄位。

empty

edittype

string

可以編輯的型別。可選值:text, textarea, select, checkbox, password, button, image and file.

text

fixed

boolean

列寬度是否要固定不可變

false

formoptions

array

對於form進行編輯時的屬性設定

empty

formatoptions

array

對某些列進行格式化的設定

none

formatter

mixed

對列進行格式化時設定的函式名或者型別

{name:’sex’,index:’sex’, align:’center’,width:60,editable:true,edittype:’select’,editoptions: {value:’0:待定;1:男;2:女’},formatter:function(cellvalue, options, rowObject){
var temp = “<img src=’${ctx}/jquery-ui-1.7.2.custom/css/img/”
if(cellvalue==1){
temp = temp +”user-white.png”;
} else if(cellvalue==2){
temp = temp +”user-white-female.png”;
} else {
temp = temp + “user-silhouette.png”;
}
temp = temp + “‘ border=’0′ />”
return temp;
}},//返回性別的圖示。

none

hidedlg

boolean

是否顯示或者隱藏此列

false

hidden

boolean

在初始化表格時是否要隱藏此列

false

index

string

索引。其和後臺互動的引數為sidx

empty

jsonmap

string

定義了返回的json資料對映

none

key

boolean

當從伺服器端返回的資料中沒有id時,將此作為唯一rowid使用只有一個列可以做這項設定。如果設定多於一個,那麼只選取第一個,其他被忽略

false

label

string

如果colNames為空則用此值來作為列的顯示名稱,如果都沒有設定則使用name 值

none

name

string

表格列的名稱,所有關鍵字,保留字都不能作為名稱使用包括subgrid, cb and rn.

Required

resizable

boolean

是否可以被resizable

true

search

boolean

在搜尋模式下,定義此列是否可以作為搜尋列

true

searchoptions

array

設定搜尋引數

empty

sortable

boolean

是否可排序

true

sorttype

string

用在當datatype為local時,定義搜尋列的型別,可選值:int/integer - 對integer排序float/number/currency - 排序數字date - 排序日期text - 排序文字

text

stype

string

定義搜尋元素的型別

text

surl

string

搜尋資料時的url

empty

width

number

預設列的寬度,只能是象素值,不能是百分比

150

xmlmap

string

定義當前列跟返回的xml資料之間的對映關係

none

unformat

function

‘unformat’單元格值

null

Jqgrid學習 -------資料

jqGrid可支援的資料型別:xml、json、jsonp、local or clientSide、xmlstring、jsonstring 
、script、function (…)。

Json資料

需要定義jsonReader來跟伺服器端返回的資料做對應,其預設值:

· jsonReader : {  

·      root: "rows",  

·      page: "page",  

·      total: "total",  

·      records: "records",  

·      repeatitems: true,  

·      cell: "cell",  

·      id: "id",  

·      userdata: "userdata",  

·      subgrid: {root:"rows",   

·         repeatitems: true,   

·        cell:"cell"  

·      }  

這樣伺服器端返回的資料格式:

· {   

·   total: "xxx",   

·   page: "yyy",   

·   records: "zzz",  

·   rows : [  

·     {id:"1", cell:["cell11", "cell12", "cell13"]},  

·     {id:"2", cell:["cell21", "cell22", "cell23"]},  

·       ...  

·   ]  

· }

jsonReader的屬性

total

總頁數

page

當前頁

records

查詢出的記錄數

rows

包含實際資料的陣列

id

行id

cell

當前行的所有單元格

自定義:

· jQuery("#gridid").jqGrid({  

· ...  

·    jsonReader : {  

·       root:"invdata",  

·       page: "currpage",  

·       total: "totalpages",  

·       records: "totalrecords",  

·       cell: "invrow"  

·    },  

· ...  

· }); 

· totalpages: "xxx",   

·   currpage: "yyy",  

·   totalrecords: "zzz",  

·   invdata : [  

·     {id:"1", invrow:["cell11", "cell12", "cell13"]},  

·     {id:"2", invrow:["cell21", "cell22", "cell23"]},  

·       ...  

·   ]  

repeatitems 
  指明每行的資料是可以重複的,如果設為false,則會從返回的資料中按名字來搜尋元素,這個名字就是colModel中的名字

· jsonReader : {  

·       root:"invdata",  

·       page: "currpage",  

·       total: "totalpages",  

·       records: "totalrecords",  

·       repeatitems: false,  

·       id: "0"  

·    }

·  totalpages: "xxx",   

·   currpage: "yyy",  

·   totalrecords: "zzz",  

·   invdata : [  

·     {invid:"1",invdate:"cell11", amount:"cell12", tax:"cell13", total:"1234", note:"somenote"},  

·     {invid:"2",invdate:"cell21", amount:"cell22", tax:"cell23", total:"2345", note:"some note"},  

·       ...  

·   ]  

此例中,id屬性值為“invid”。 
一旦當此屬性設為false時,我們就不必把所有在colModel定義的name值都賦值。因為是按name來進行搜尋元素的,所以他的排序也不是按colModel中指定的排序結果。

使用者資料(user data) 
在某些情況下,我們需要從伺服器端返回一些引數但並不想直接把他們顯示到表格中,而是想在別的地方顯示,那麼我們就需要用到userdata標籤

· jsonReader: {  

·   ...  

·   userdata: "userdata",  

·   ...  

· } 

· {   

·   total: "xxx",   

·   page: "yyy",   

·   records: "zzz",   

·   userdata: {totalinvoice:240.00, tax:40.00},   

·   rows : [   

·     {id:"1", cell:["cell11", "cell12", "cell13"]},   

·     {id:"2", cell:["cell21", "cell22", "cell23"]},   

·     ...   

·   ]   

· }

在客戶端我們可以有下面兩種方法得到這些額外資訊:

1.      jQuery("grid_id").getGridParam('userData')  

2.      jQuery("grid_id").getUserData()  

3.      jQuery("grid_id").getUserDataItem( key )  

Jqgrid學習 -------事件

· var lastSel;  

· jQuery("#gridid").jqGrid({  

· ...  

·    onSelectRow: function(id){   

·       if(id && id!==lastSel){   

·          jQuery('#gridid').restoreRow(lastSel);   

·          lastSel=id;   

·       }   

·       jQuery('#gridid').editRow(id, true);   

·    },  

· ...  

· })

事件

引數

備註

afterInsertRow

rowidrowdatarowelem

當插入每行時觸發。rowid插入當前行的id;rowdata插入行的資料,格式