日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jqgrid的函数与操作

發布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jqgrid的函数与操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jqGrid有很多方法函數,用來操作數據或者操作Grid表格本身。jqGrid的方法有兩種調用方式:

$("#grid_id").jqGridMethod( parameter1,...,parameterN );

或者

$("#grid_id").jqGrid('method', parameter1,...,parameterN );

?

首先介紹一下jqGrid的幾個最常用的方法函數,具體的方法API也可以參考官方文檔(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods?)

?

1. getGridParam

?

這個方法用來獲得jqGrid的選項值。它具有一個可選參數name,name即代表著jqGrid的選項名,例如:

[javascript]?view plaincopy
  • var?id?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??

  • 即可獲得當前選中的行的ID。

    ?

    注:selrow是jqGrid選項之一,默認值是null。這是一個只讀選項,代表最后選中行的ID。如果執行翻頁或者排序后,此選項將被設為null。關于其他選項,后續會有介紹。

    ?

    如果不傳入name參數,則會返回jqGrid整個選項options。

    ?

    ?

    ?

    2. getRowData

    ?

    這個方法用來獲得某行的數據。它具有一個rowid參數,jqGrid會根據這個rowid返回對應行的數據,返回的是name:value類型的數組。例如:

    [javascript]?view plaincopy
  • var?getContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????var?rowData?=?$("#gridTable").jqGrid("getRowData",?selectedId);??
  • ??????
  • ????alert("First?Name:?"?+?rowData.firstName);??
  • };??
  • ?

    如果rowid未能被找到,則返回一個空數組;如果未設置rowid參數,則以數組的形式返回Grid的所有行數據。

    ?

    ?

    ?

    3. addRowData

    ?

    這個方法用于向Grid中插入新的一行。執行成功返回true,否則返回false。它具有4個參數:

    • rowid?:新行的id號;
    • data?:新行的數據對象,形式為{name1:value1,name2: value2…},其中name為colModel中定義的列名稱name;
    • position?:插入的位置(first:表格頂端;last:表格底端;before:srcrowid之前;after:srcrowid之后);
    • srcrowid?:新行將插入到srcrowid指定行的前面或后面。

    例如:

    [javascript]?view plaincopy
  • var?addContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????var?dataRow?=?{???
  • ????????id?:?99,??
  • ????????lastName?:?"Zhang",??
  • ????????firstName?:?"San",??
  • ????????email?:?"zhang_san@126.com",??
  • ????????telNo?:?"0086-12345678"??
  • ????};??
  • ??????
  • ????if?(selectedId)?{??
  • ????????$("#gridTable").jqGrid("addRowData",?99,?dataRow,?"before",?selectedId);??
  • ??????????
  • ????}?else?{??
  • ????????$("#gridTable").jqGrid("addRowData",?99,?dataRow,?"first");??
  • ??????????
  • ????}??
  • };??
  • ?

    這個方法可以一次性插入多行,data參數必須是[{name1:value1,name2: value2…}, {name1:value1,name2: value2…}]這樣的數組形式,而且rowid參數也應該設為data參數對象中代表id的field名稱。不過,此時的rowid不用必須是colModel中的一部分。
    例如:

    [javascript]?view plaincopy
  • var?addContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????var?dataRow?=?[{??????
  • ????????id?:?99,??
  • ????????lastName?:?"Zhang",??
  • ????????firstName?:?"San",??
  • ????????email?:?"zhang_san@126.com",??
  • ????????telNo?:?"0086-12345678"??
  • ????},??
  • ????{?????
  • ????????id?:?100,??
  • ????????lastName?:?"Li",??
  • ????????firstName?:?"Si",??
  • ????????email?:?"li_si@126.com",??
  • ????????telNo?:?"0086-12345678"??
  • ????},??
  • ????{?????
  • ????????id?:?101,??
  • ????????lastName?:?"Wang",??
  • ????????firstName?:?"Wu",??
  • ????????email?:?"wang_wu@126.com",??
  • ????????telNo?:?"0086-12345678"??
  • ????}];??
  • ??????
  • ????if?(selectedId)?{??
  • ????????$("#gridTable").jqGrid("addRowData",?"id",?dataRow,?"before",?selectedId);??
  • ??????????
  • ????}?else?{??
  • ????????$("#gridTable").jqGrid("addRowData",?"id",?dataRow,?"first");??
  • ??????????
  • ????}??
  • };??
  • ?

    注:我測試了一下,一次插入多行的情況下,用于設置插入位置的后兩個參數,似乎沒有起作用。插入的幾行數據都被置于Grid的底端。

    ?

    ?

    ?

    4. setRowData

    這個方法用于為某行數據設置數據值。執行成功返回true,否則返回false。它具有3個參數:

    • rowid?:更新數據的行id;
    • data?:更新的數據對象,形式為{name1:value1,name2: value2…},其中name為colModel中定義的列名稱name;這個數據對象,不必設置完全,需要更新哪列,就設置哪列的name:value對;
    • cssprop?:如果cssprop為String類型,則會使用jQuery的addClass為行增加相應名稱的CSS類;如果為object類型,則會使用html的css屬性,為行添加樣式。如果只想增加css樣式而不更新數據,可以將data參數設為false。

    例如:

    [javascript]?view plaincopy
  • var?updateContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????var?dataRow?=?{??
  • ????????lastName?:?"Li",??
  • ????????firstName?:?"Si",??
  • ????????email?:?"li_si@126.com"???
  • ????};??
  • ??????
  • ????var?cssprop?=?{??
  • ????????color?:?"#FF0000"??
  • ????};??
  • ??????
  • ????$("#gridTable").jqGrid('setRowData',?selectedId,?dataRow,?cssprop);??
  • };??
  • ?

    ?

    ?

    5. delRowData

    ?

    這個方法用于刪除某行數據。執行成功返回true,否則返回false。具有一個參數rowid,代表要刪除的行id。例如:

    [javascript]?view plaincopy
  • var?deleteContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????$("#gridTable").jqGrid('delRowData',?selectedId);??
  • };??
  • ?

    ?

    ?

    ?

    6. setGridParam

    ?

    這個方法與getGridParam對應,用于設置jqGrid的options選項。返回jqGrid對象。參數為{name1:value1,name2: value2…}形式的對象(name來自jqGrid的options選項名)。某些選項在設置之后需要trigger("reloadGrid"),才能顯示出效果。

    例如:

    [javascript]?view plaincopy
  • var?changeGridOptions?=?function()?{??
  • ????$("#gridTable").jqGrid("setGridParam",?{??
  • ????????rowNum:?50,??
  • ????????page:?16??
  • ????}).trigger('reloadGrid');??
  • };??
  • ?

    注:我測試了一下,這個方法對于設置jqGrid的caption選項似乎無效。大概因此有了setCaption方法。

    ?

    ?

    ?

    ?

    7. setGridWidth

    ?

    為Grid動態地設定一個新的寬度。兩個參數:

    • new_width?:以px為單位的新寬度值;
    • shrink?:作用與jqGrid的shrinkToFit選項相同;如果此參數未設置,則沿用jqGrid的shrinkToFit選項的值。

    ?

    ?

    ?

    8. trigger("reloadGrid")

    ?

    根據當前設置,重新載入Grid表格,即意味著向Server發送一個新的請求。此方法只能用于已經構建好的Grid。此外,此方法不會使對colModel所做出的改變生效。應該使用gridUnload來重新載入對colModel的新設置。

    ?

    ?

    ?

    9. 其他方法

    ?

    除了以上介紹的的方法外,jqGrid還有其他有用的方法,例如:
    addJSONData、clearGridData、hideCol、resetSelection、setCaption、setGridHeight、setLabel、showCol等
    以及增強模塊提供的方法,例如:
    filterGrid、GridDestroy、GridUnload、setColProp等。

    這些方法的具體用法,或淺顯易懂,或不是非常常用。都可以參考官方文檔(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods?),得到具體指示。

    ?

    ?

    ?

    10. 額外的考慮

    ?

    在上面介紹的增刪改數據行的操作中,jqGrid實際上完成的只是客戶端的操作,主要是DOM的更改工作。但是如果傳到Server的請求失敗了,或者沒有得到想要的返回結果,那jqGrid的處理還繼續嗎?會不會和Server端的數據不同步了呢?
    這個問題在下一篇中再討論吧。

    ?

    ?

    ?

    ?

    ?

    注: 本篇中介紹的方法在jqGrid的Demo中也有介紹,但是我覺得還是自己的實例看起來更直觀,更適合自己理解。

    附上代碼:

    ?

    JavaScript部分:

    [javascript]?view plaincopy
  • $(function(){??
  • ????//?配置jqGrid組件??
  • ????$("#gridTable").jqGrid({??
  • ????????url:?"jqGrid01.action",??
  • ????????datatype:?"json",??
  • ????????mtype:?"GET",??
  • ????????height:?350,??
  • ????????width:?600,??
  • ????????colModel:?[??
  • ??????????????{name:"id",index:"id",label:"編碼",width:40},????
  • ??????????????{name:"lastName",index:"lastName",label:"姓",width:80,sortable:false},??
  • ??????????????{name:"firstName",index:"firstName",label:"名",width:80,sortable:false},??
  • ??????????????{name:"email",index:"email",label:"電子郵箱",width:160,sortable:false},??
  • ??????????????{name:"telNo",index:"telNo",label:"電話",width:120,sortable:false}??
  • ????????],??
  • ????????viewrecords:?true,??
  • ????????rowNum:?15,??
  • ????????rowList:?[15,50,100],??
  • ????????prmNames:?{search:?"search"},??
  • ????????jsonReader:?{??
  • ????????????root:"gridModel",??
  • ????????????records:?"record",??
  • ????????????repeatitems?:?false??
  • ????????},??
  • ????????pager:?"#gridPager",??
  • ????????caption:?"聯系人列表",??
  • ????????hidegrid:?false,??
  • ????????shrikToFit:?true??
  • ????});??
  • });??
  • var?echoSelRow?=?function()?{??
  • ????var?id?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????alert("當前選中行ID:"?+?id);??
  • };??
  • var?getContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????var?rowData?=?$("#gridTable").jqGrid("getRowData",?selectedId);??
  • ??????
  • ????alert("First?Name:?"?+?rowData.firstName);??
  • };??
  • var?addContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????var?dataRow?=?{???
  • ????????id?:?99,??
  • ????????lastName?:?"Zhang",??
  • ????????firstName?:?"San",??
  • ????????email?:?"zhang_san@126.com",??
  • ????????telNo?:?"0086-12345678"??
  • ????};??
  • ??????
  • ????if?(selectedId)?{??
  • ????????$("#gridTable").jqGrid("addRowData",?99,?dataRow,?"before",?selectedId);??
  • ??????????
  • ????}?else?{??
  • ????????$("#gridTable").jqGrid("addRowData",?99,?dataRow,?"first");??
  • ??????????
  • ????}??
  • };??
  • var?updateContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????var?dataRow?=?{??
  • ????????lastName?:?"Li",??
  • ????????firstName?:?"Si",??
  • ????????email?:?"li_si@126.com"???
  • ????};??
  • ??????
  • ????var?cssprop?=?{??
  • ????????color?:?"#FF0000"??
  • ????};??
  • ??????
  • ????$("#gridTable").jqGrid('setRowData',?selectedId,?dataRow,?cssprop);??
  • };??
  • var?deleteContact?=?function()?{??
  • ????var?selectedId?=?$("#gridTable").jqGrid("getGridParam",?"selrow");??
  • ??????
  • ????$("#gridTable").jqGrid('delRowData',?selectedId);??
  • };??
  • var?changeGridOptions?=?function()?{??
  • ????$("#gridTable").jqGrid("setGridParam",?{??
  • ????????rowNum:?50,??
  • ????????page:?16??
  • ????}).trigger('reloadGrid');??
  • ??????
  • ????$("#gridTable").jqGrid("setCaption",?"Contact?List").trigger('reloadGrid');??
  • ??????
  • ????alert($("#gridTable").jqGrid("getGridParam",?"caption"));??
  • ????alert($("#gridTable").jqGrid("getGridParam",?"rowNum"));??
  • };??
  • var?resetWidth?=?function()?{??
  • ????$("#gridTable").jqGrid("setGridWidth",?300,?false);??
  • };??
  • ?

    ?

    html部分:

    [xhtml]?view plaincopy
  • <!DOCTYPE?html??
  • PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"??
  • "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">??
  • <html?xmlns="http://www.w3.org/1999/xhtml"?xml:lang="zh-CN"?lang="zh-CN">??
  • ????<head>??
  • ????????<title>jqGrid02</title>??
  • ????????<link?rel="stylesheet"?type="text/css"?media="screen"?href="../css/themes/aero/jquery-ui-1.8.1.custom.css"?mce_href="css/themes/aero/jquery-ui-1.8.1.custom.css"?/>??
  • ????????<link?rel="stylesheet"?type="text/css"?media="screen"?href="../css/themes/aero/ui.jqgrid.custom.css"?mce_href="css/themes/aero/ui.jqgrid.custom.css"?/>??
  • ??????????
  • ????????<mce:script?type="text/javascript"?src="../js/jquery-1.4.2.min.js"?mce_src="js/jquery-1.4.2.min.js"></mce:script>??
  • ????????<mce:script?src="../js/jquery-ui-1.8.1.custom.min.js"?mce_src="js/jquery-ui-1.8.1.custom.min.js"?type="text/javascript"></mce:script>??
  • ????????<mce:script?src="../js/i18n/grid.locale-zh-CN.js"?mce_src="js/i18n/grid.locale-zh-CN.js"?type="text/javascript"></mce:script>??
  • ????????<mce:script?src="../js/jquery.jqGrid.min.js"?mce_src="js/jquery.jqGrid.min.js"?type="text/javascript"></mce:script>??
  • ??????????
  • ????????<mce:script?src="js/jqGrid02.js"?mce_src="js/jqGrid02.js"?type="text/javascript"></mce:script>????
  • ????</head>??
  • ????<body>??
  • ????????<h3>??
  • ????????????jqGrid測試?02??
  • ????????</h3>??
  • ????????<div>??
  • ????????????<table?id="gridTable"></table>??
  • ????????????<div?id="gridPager"></div>??
  • ????????</div>??
  • ??????????
  • ????????<br?/>??
  • ??????????
  • ????????<div>??
  • ????????????<button?onclick="echoSelRow()">當前行ID</button>??
  • ????????????<button?onclick="getContact()">當前聯系人</button>??
  • ????????????<button?onclick="addContact()">添加行</button>??
  • ????????????<button?onclick="updateContact()">修改行</button>??
  • ????????????<button?onclick="deleteContact()">刪除行</button>??
  • ????????????<button?onclick="changeGridOptions()">改變Grid選項</button>??
  • ????????????<button?onclick="resetWidth()">改變Grid寬度</button>??
  • ????????</div>??
  • ????</body>??
  • </html>??
  • ?

    ?


    from:?http://blog.csdn.net/fdc_messenger/article/details/7323194

    總結

    以上是生活随笔為你收集整理的jqgrid的函数与操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。