<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    (轉(zhuǎn)貼) jqGrid整理

    原帖地址:
    http://www.cnblogs.com/mycoding/archive/2011/07/07/2099878.html

    一、 jqGrid的加載。

    1.引用相關(guān)頭文件

    引入CSS:

    <link href="Scripts/jquery-ui-1.8.1.custom.css" rel="stylesheet" type="text/css" />

    <link href="Scripts/ui.jqgrid.css" rel="stylesheet" type="text/css" />

    引入JS:

    <script src="Scripts/jquery-1.5.1.js" type="text/javascript"></script>

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

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

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

    因為jqGrid3.6及以后的版本集成了jQuery UI,所以,此處需要導(dǎo)入UI相關(guān)js和css。另外grid.locale-en.js這個語言文件必須在jquery.jqGrid.min.js之前加載,否則會出問題。

    2.將jqgrid加入頁面中

    根據(jù)jqGrid的文檔,要想生成一個jqGrid,最直接的方法就是:

    $("#list").jqGrid(options);

    其中l(wèi)ist是頁面上的一個table:<table id="list"></table>

    下面是一個簡單的例子:

    <script type="text/javascript">
     
    $(document).ready(function () {
     
    jQuery("#list").jqGrid({
     
    url: 'Handler.ashx',
     
    datatype: "json",
     
    mtype: 'GET',
     
    colNames: ['SalesReasonID', 'Name', 'ReasonType', 'ModifiedDate'],
     
    colModel: [
     
    { name: 'SalesReasonID', index: 'SalesReasonID', width: 40, align: "left", editable: true },
     
    { name: 'Name', index: 'Name', width: 100, align: "center" },
     
    { name: 'ReasonType', index: 'ReasonType', width: 100, align: "center" },
     
    { name: 'ModifiedDate', index: 'ModifiedDate', width: 150, align: "center", search: false }
     
    ],
     
    rowList: [10, 20, 30],
     
    sortname: 'SalesReasonID',
     
    viewrecords: true,
     
    sortorder: "desc",
     
    jsonReader: {
     
    root: "griddata",
     
    total: "totalpages",
     
    page: "currpage",
     
    records: "totalrecords",
     
    repeatitems: false
     
    },
     
    pager: jQuery('#pager'),
     
    rowNum: 5,
     
    altclass: 'altRowsColour',
     
    //width: 'auto',
     
    width: '500',
     
    height: 'auto',
     
    caption: "DemoGrid"
     
    }).navGrid('#pager', { add: true, edit: true, del: true,search:false,refresh:false }); ;
     
    })

    二、 jqgrid的重要選項

    具體的options參考,可以訪問jqGrid文檔關(guān)于option的章節(jié)(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options)。其中有幾個是比較常用的,重點介紹一下:

    • url :jqGrid控件通過這個參數(shù)得到需要顯示的數(shù)據(jù),具體的返回值可以使XML也可以是Json。
    • datatype :這個參數(shù)用于設(shè)定將要得到的數(shù)據(jù)類型。類型包括:json 、xml、xmlstring、local、javascript、function。
    • mtype : 定義使用哪種方法發(fā)起請求,GET或者POST。
    • height :Grid的高度,可以接受數(shù)字、%值、auto,默認值為150。
    • width :Grid的寬度,如果未設(shè)置,則寬度應(yīng)為所有列寬的之和;如果設(shè)置了寬度,則每列的寬度將會根據(jù)shrinkToFit選項的設(shè)置,進行設(shè)置。
    • shrinkToFit :此選項用于根據(jù)width計算每列寬度的算法。默認值為true。如果shrinkToFit為true且設(shè)置了width值,則每列寬度會根據(jù) width成比例縮放;如果shrinkToFit為false且設(shè)置了width值,則每列的寬度不會成比例縮放,而是保持原有設(shè)置,而Grid將會有 水平滾動條。
    • autowidth :默認值為false。如果設(shè)為true,則Grid的寬度會根據(jù)父容器的寬度自動重算。重算僅發(fā)生在Grid初始化的階段;如果當(dāng)父容器尺寸變化了,同時也需要變化Grid的尺寸的話,則需要在自己的代碼中調(diào)用setGridWidth方法來完成。
    • pager :定義頁碼控制條Page Bar,在上面的例子中是用一個div(<div id=”pager”></div>)來放置的。
    • sortname :指定默認的排序列,可以是列名也可以是數(shù)字。此參數(shù)會在被傳遞到Server端。
    • viewrecords :設(shè)置是否在Pager Bar顯示所有記錄的總數(shù)。
    • caption :設(shè)置Grid表格的標(biāo)題,如果未設(shè)置,則標(biāo)題區(qū)域不顯示。
    • rowNum :用于設(shè)置Grid中一次顯示的行數(shù),默認值為20。正是這個選項將參數(shù)rows(prmNames中設(shè)置的)通過url選項設(shè)置的鏈接傳遞到Server。注意如果Server返回的數(shù)據(jù)行數(shù)超過了rowNum的設(shè)定,則Grid也只顯示rowNum設(shè)定的行數(shù)。
    • rowList :一個數(shù)組,用于設(shè)置Grid可以接受的rowNum值。例如[10,20,30]。
    • colNames :字符串?dāng)?shù)組,用于指定各列的題頭文本,與列的順序是對應(yīng)的。
    • colModel :最重要的數(shù)組之一,用于設(shè)定各列的參數(shù)。(稍后詳述)
    • prmNames :這是一個數(shù)組,用于設(shè)置jqGrid將要向Server傳遞的參數(shù)名稱。(稍后詳述)
    • jsonReader :這又是一個數(shù)組,用來設(shè)定如何解析從Server端發(fā)回來的json數(shù)據(jù)。(稍后詳述)

    2.1 prmNames選項

    prmNames是jqGrid的一個重要選項,用于設(shè)置jqGrid將要向Server傳遞的參數(shù)名稱。其默認值為:

    prmNames : {

    page:"page", // 表示請求頁碼的參數(shù)名稱

    rows:"rows", // 表示請求行數(shù)的參數(shù)名稱

    sort: "sidx", // 表示用于排序的列名的參數(shù)名稱

    order: "sord", // 表示采用的排序方式的參數(shù)名稱

    search:"_search", // 表示是否是搜索請求的參數(shù)名稱

    nd:"nd", // 表示已經(jīng)發(fā)送請求的次數(shù)的參數(shù)名稱

    id:"id", // 表示當(dāng)在編輯數(shù)據(jù)模塊中發(fā)送數(shù)據(jù)時,使用的id的名稱

    oper:"oper", // operation參數(shù)名稱

    editoper:"edit", // 當(dāng)在edit模式中提交數(shù)據(jù)時,操作的名稱

    addoper:"add", // 當(dāng)在add模式中提交數(shù)據(jù)時,操作的名稱

    deloper:"del", // 當(dāng)在delete模式中提交數(shù)據(jù)時,操作的名稱

    subgridid:"id", // 當(dāng)點擊以載入數(shù)據(jù)到子表時,傳遞的數(shù)據(jù)名稱

    npage: null,

    totalrows:"totalrows" // 表示需從Server得到總共多少行數(shù)據(jù)的參數(shù)名稱,參見jqGrid選項中的rowTotal

    }

    2.2 jsonReader選項

    jsonReader是jqGrid的一個重要選項,用于設(shè)置如何解析從Server端發(fā)回來的json數(shù)據(jù),如果Server返回的是xml數(shù)據(jù),則對應(yīng)的使用xmlReader來解析。jsonReader的默認值為:

    jsonReader : {

    root: "rows", // json中代表實際模型數(shù)據(jù)的入口

    page: "page", // json中代表當(dāng)前頁碼的數(shù)據(jù)

    total: "total", // json中代表頁碼總數(shù)的數(shù)據(jù)

    records: "records", // json中代表數(shù)據(jù)行總數(shù)的數(shù)據(jù)

    repeatitems: true, // 如果設(shè)為false,則jqGrid在解析json時,會根據(jù)name來搜索對應(yīng)的數(shù)據(jù)元素(即可以json中元素可以不按順序);而所使用的name是來自于colModel中的name設(shè)定。

    cell: "cell",

    id: "id",

    userdata: "userdata",

    subgrid: {

    root:"rows",

    repeatitems: true,

    cell:"cell"

    }

    }

    假如有下面一個json字符串:

    {"totalpages":"3","currpage":"1","totalrecords":"11","griddata": [{"SalesReasonID":"1","Name":"Price","ReasonType":"Other","ModifiedDate":"1998 年6月1日"},{"SalesReasonID":"2","Name":"On Promotion","ReasonType":"Promotion","ModifiedDate":"1998年6月1日"}, {"SalesReasonID":"3","Name":"Magazine Advertisement","ReasonType":"Marketing","ModifiedDate":"1998年6月1日"}, {"SalesReasonID":"4","Name":"Television Advertisement","ReasonType":"Marketing","ModifiedDate":"1998年6月1日"}, {"SalesReasonID":"5","Name":"Manufacturer","ReasonType":"Other","ModifiedDate":"1998 年6月1日"}]}

    其對應(yīng)的jsonReader為:jsonReader: {

    root: "griddata",

    total: "totalpages",

    page: "currpage",

    records: "totalrecords",

    repeatitems: false

    }

    注:cell、id在repeatitems為true時可以用到,即每一個記錄是由一對id和cell組合而成,即可以適用另一種json結(jié)構(gòu)。援引文檔中的例子:

    repeatitems為true時:

    jQuery("#gridid").jqGrid({  

         ...  

         jsonReader : {  

             root:"invdata",  

             page: "currpage",  

             total: "totalpages",  

             records: "totalrecords"

         },  

         ...  

    });  

    json結(jié)構(gòu)為:

    {   

    "totalpages": "xxx",   

    "currpage": "yyy",  

    "totalrecords": "zzz",  

    "invdata" : [  

                      {"id" :"1", "cell" :["cell11", "cell12", "cell13"]},   // cell中不需要各列的name,只要值就OK了,但是需要保持對應(yīng)

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

                      ...  

         ]  

    }  

    repeatitems為false時:

    jQuery("#gridid").jqGrid({  

         ...  

         jsonReader : {  

             root:"invdata",  

             page: "currpage",  

             total: "totalpages",  

             records: "totalrecords",  

             repeatitems: false,  

             id: "0"

         },  

         ...  

    });  

    json結(jié)構(gòu)為:

    {   

    "totalpages" : "xxx",   

    "currpage" : "yyy",  

    "totalrecords" : "zzz",  

    "invdata" : [  

                     {"invid" : "1","invdate":"cell11", "amount" :"cell12", "tax" :"cell13", "total" :"1234", "note" :"somenote"}, // 數(shù)據(jù)中需要各列的name,但是可以不按列的順序

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

                      ...  

         ]  

    }  

    2.3 colModel的重要選項

    colModel也有許多非常重要的選項,在使用搜索、排序等方面都會用到。這里先只說說最基本的。

    • name :為Grid中的每個列設(shè)置唯一的名稱,這是一個必需選項,其中保留字包括subgrid、cb、rn。
    • index :設(shè)置排序時所使用的索引名稱,這個index名稱會作為sidx參數(shù)(prmNames中設(shè)置的)傳遞到Server。
    • label :當(dāng)jqGrid的colNames選項數(shù)組為空時,為各列指定題頭。如果colNames和此項都為空時,則name選項值會成為題頭。
    • width :設(shè)置列的寬度,目前只能接受以px為單位的數(shù)值,默認為150。
    • sortable :設(shè)置該列是否可以排序,默認為true。
    • search :設(shè)置該列是否可以被列為搜索條件,默認為true。
    • resizable :設(shè)置列是否可以變更尺寸,默認為true。
    • hidden :設(shè)置此列初始化時是否為隱藏狀態(tài),默認為false。
    • formatter :預(yù)設(shè)類型或用來格式化該列的自定義函數(shù)名。常用預(yù)設(shè)格式有:integer、date、currency、number等(具體參見文檔 )。

    三、 注意事項

    1. 動態(tài)改變Add Form或者Edit Form中的select的內(nèi)容,如:改變下圖中的Comparator下拉中的內(nèi)容。

    clip_image002

    $("#list_d").navGrid('#pager_d',{add:true,edit:true,del:true,search:false,refresh:false},

    {

    checkOnSubmit:false, closeAfterEdit: true,recreateForm:true,

    beforeInitData:function(formid){

    initComparator();

    },

    beforeShowForm: function(formid){

    $("#list_d").jqGrid('setColProp', 'Name', { editrules:{required:false},});

    $('#tr_Name', formid).hide();

    }

    },//edit

    {},//add

    {}//del

    beforeInitData, beforeShowForm在每次點擊編輯的時候都會執(zhí)行。initComparator的作用是通過ajax獲取數(shù)據(jù),然后利 用$("#list_d").jqGrid('setColProp', 'Comparator', { editoptions: { value: valueString} });來設(shè)置Comparator下拉中的內(nèi)容。其中valueString的格式如下’ equal to: equal to; not equal to: not equal to’。鍵值之間用冒號隔開,2項之間用分號隔開。注意:把recreateForm設(shè)為true,否則'setColProp'只在第一次調(diào)用時有效。

    2. var rowNum = parseInt($(this).getGridParam("records"), 10); 得到數(shù)據(jù)條數(shù)。

    3. jQuery("#list_d").clearGridData();清空數(shù)據(jù)。

    4. jQuery("#list").getCell(ids,"Key");獲取第ids行的key列。

    5. $("#list").jqGrid('setSelection', "1");選中第一行。放在loadComplete:中在gird加載完成的時候自動選中第一行。 loadComplete:function(data){$("#list").jqGrid('setSelection', "1");

    }

    6. 對于像1中的可編輯的字段,可以設(shè)定rule,參見http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules#editrules

    7. 修改Option,以URL為例

    jQuery("#list_d").jqGrid('setGridParam',{url:"xxx.aspx",page:1}).trigger('reloadGrid');


    復(fù)雜的表格可以參考jquery grid demo網(wǎng)站 :




    posted on 2011-11-01 14:23 AK47 閱讀(2327) 評論(0)  編輯  收藏 所屬分類: JQuery


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2011年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费A级毛片av无码| 日本亚洲色大成网站www久久 | 国产免费毛不卡片| 免费国产成人高清视频网站 | 亚洲成综合人影院在院播放| 久久水蜜桃亚洲AV无码精品| 人人玩人人添人人澡免费| 日韩高清免费在线观看| 亚洲今日精彩视频| 美女视频黄频a免费| 亚洲成人免费网址| 亚洲va久久久噜噜噜久久狠狠 | 免费观看的a级毛片的网站| 亚洲不卡中文字幕无码| 亚洲成av人在线观看网站| 亚洲大片免费观看| 免费a级毛片永久免费| 阿v视频免费在线观看| 国产亚洲日韩在线三区| 国产亚洲精品美女| 免费网站看v片在线香蕉| 国产成人综合亚洲一区| 一本久久a久久精品亚洲| 91福利视频免费| 亚洲伊人tv综合网色| 国产一级片免费看| 国产日产亚洲系列| 222www免费视频| 香蕉视频亚洲一级| 日本无吗免费一二区| 一级做a爰片久久毛片免费看| 国产一区二区三区无码免费| 亚洲色在线无码国产精品不卡| 国产又大又粗又长免费视频 | 亚洲一区精彩视频| 人禽杂交18禁网站免费| 亚洲AV无码国产精品色| 亚洲免费视频播放| 国产精品福利片免费看| 亚洲综合在线另类色区奇米| 亚洲国产精品免费观看|