zoukankan      html  css  js  c++  java
  • jqGrid用法汇总(全经典)

    1.支持多种类型的数据集合作为数据源

    $("#grid1").jqgrid(
    ........
    datatype: "xml",
    ........
    );
    
    XML格式:
    <rows>
        <page></page>
        <total></total>
        <records></records>
        <row id="rowid">
            <cell>value1</cell>
            <cell>valueN</cell>
        </row>
    </rows>
    
    json格式:
    {"page":"页号",
    "rows":[
        {name1:'value1',name2:'value2',.....nameN:'valueN'},
        {....} 
    ],
    "total":记录数,
    "records":总记录数
    } 
    
    数组格式:
    var datas = [
        {name1:'value1',name2:'value2',..... nameN:'valueN'},
        {....} 
    ];
    //把数据添加到jqgrid里
    for (var i = 0; i <= mydata.length; i++) {
        jQuery("#grid1").jqGrid('addRowData', i + 1, mydata[i]);
    }
    或者设置data属性:
      $("#grid1").jqgrid(
        data:mydata,    
        datatype:'local',
      );
    View Code

     2.统计运算的功能

    将footerrow设为true,绑定gridComplete事件。
    统计时利用getCol方法,
    第一个参数为colMode的name值,
    第二个设为false,否则会返回一个数组而不是但一个数据,
    第三个是设置统计方式,有'sum','avg'和'count'。
    
    $("#grid1").jqgrid(
        ......
        footerrow: true,
        gridComplete: completeMethod,
    );
    function completeMethod(){
        var sum_amount=$("#grid1").getCol('amount',false,'sum');
        var sum_tax=$("#grid1").getCol('tax',false,'sum');
        var sum_total=$("#grid1").getCol('total',false,'sum');
        $("#grid1").footerData('set', { name: '合计:', amount: sum_amount, tax: sum_tax, total: sum_total });
    }
    View Code

     3.排序

    只要单击列的标题,就可以对该列进行升序或降序的排序。设置该列是否允许排序,在列的属性里设置sortable,同时对于不同的数据类型,
    也需要设置其相应的排序类型sorttype,类型有int/integer 整型,float/number/currency 浮点型,date 日期,text 文本,
    function 定义函数来实现自定的排序规则。
    
    $("#grid1").jqgrid( 
        ........
        colModel: [
            .........
            { name: 'id', index: 'id',  60, myexport: true, editable: true , sorttype: "int", sortable: true},
        ],
    );
    View Code

    4.分组

    var mydata = [
        {id:"1",invdate:"2010-05-24",name:"test",note:"note",tax:"10.00",total:"2111.00"} ,
        {id:"2",invdate:"2010-05-25",name:"test2",note:"note2",tax:"20.00",total:"320.00"},
        {id:"3",invdate:"2007-09-01",name:"test3",note:"note3",tax:"30.00",total:"430.00"},
        {id:"4",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"21.00",total:"320.00"},
        {id:"5",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
    
    ];
    jQuery("#list48").jqGrid({
        data: mydata,
        datatype: "local",
        height: 'auto',
        rowNum: 30,
        rowList: [10,20,30],
        colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
        colModel:[
            {name:'id',index:'id', 60, sorttype:"int"},
            {name:'invdate',index:'invdate', 90, sorttype:"date", formatter:"date"},
            {name:'name',index:'name', 100, editable:true},
            {name:'amount',index:'amount', 80, align:"right",sorttype:"float", formatter:"number", editable:true},
            {name:'tax',index:'tax', 80, align:"right",sorttype:"float", editable:true}, 
            {name:'total',index:'total', 80,align:"right",sorttype:"float"}, 
            {name:'note',index:'note', 150, sortable:false} 
        ],
        pager: "#plist48",
        viewrecords: true,
        sortname: 'name',
        grouping:true,
        groupingView : {
            groupField : ['name']
        },
        caption: "Grouping Array Data"
    });
    View Code

    5.筛选

    jqGrid的筛选并不是在grid里面的内容进行筛选,其实是对数据库里的数据筛选查询。
    html:
    <table id="s2list"></table>
    <div id="s2pager"></div>
    
    javascript:
    jQuery("#s3list").jqGrid(
        'navGrid','#s3pager',
        {edit:false,add:false,del:false,search:false,refresh:false}
    ); 
    jQuery("#s3list").jqGrid(
        'navButtonAdd',"#s3pager",
        {caption:"Toggle",title:"Toggle Search Toolbar", buttonicon :'ui-icon-pin-s',     
        onClickButton:function(){       
            mygrid[0].toggleToolbar();   
        }
    });
    
    jQuery("#s3list").jqGrid(
        'navButtonAdd',"#s3pager",
        {caption:"Clear",title:"Clear Search",buttonicon :'ui-icon-refresh',     
        onClickButton:function(){       
            mygrid[0].clearToolbar()   
        }
    }); 
    
    jQuery("#s3list").jqGrid('filterToolbar');
    View Code

    6.增删改查工具栏及分页栏

    jqGrid附带了分页栏,在分页栏上可以添加增加,修改,删除以及查询按钮。
    在html多添加一个层,这个层就存放分页栏:
    记得要在colModel里给可供编辑的列的editable赋值为true,才可以编辑。
    <div id="pager"></div>
    $("#grid1").jqgrid(
        .......
        pager:"#pager",     
        //通过这属性还可以设置可选的页面大小     
        rowList: [10, 20, 30],
    );
    //这里的 edit,add等就是对应编辑新增等按钮,通过设置布尔值来决定是否显示
    jQuery("#grid1").jqGrid(
        'navGrid', '#pager', 
        { edit: true, add: true, del: true, search: true, refresh: true}
    );
    //或者用这种形式 
    jQuery("#grid1").jqGrid(
        'navGrid', 
        '#pager',
        //options
        {}, 
        // edit options
      {height: 280, reloadAfterSubmit: false }, 
        // add options
      {height: 280, reloadAfterSubmit: false }, 
        // del options
      {reloadAfterSubmit: false }, 
        // search options
      {} 
    );
    View Code

    7.分页读取数据

    既然上面已提及到分页,下面则介绍另一种分页方式,通过滚动条进行翻页。
    在这种分页方式中,数据库的所有数据并非一下子读取出来填充到grid中,
    而是通过滚动条的位置得出当前浏览到的哪一页数据,才从数据库读取那部分的数据。
    $("#grid1").jqgrid(
        ......
        //设置了这个才会根据滚动分页读取数据
        scroll: 1,
       //设置页面的大小
      rowNum: 10,
    );
    下面的例子只是用到本地的数据,同样也是实现了滚动翻页的效果
    jQuery("#scrolling").jqGrid({
        scroll: 1,
        datatype: "local",
        data:mydata,
        height: 100,
         600,
        colNames: ['Index', 'Name', 'Code'],
        colModel: [
            { name: 'id', index: 'id',  65 },
            { name: 'name', index: 'name',  150 },
            { name: 'note', index: 'note',  100 }
        ],
        rowNum: 5,
        gridview: true,
        pager: '#pscrolling',
        sortname: 'item_id',
        viewrecords: true,
        sortorder: "asc",
        caption: "Loading data while scrolling"
    });
    View Code

    8.父子表

    通过以下设置可使用子表
    $("#grid1").jqgrid(
        ......
        //启用子表
        subGrid : true,
        subGridUrl: '............',
        //设置子表的属性
        subGridModel: [{
        name : ['name1','name2',......,'nameN'], 
        width : [width1,width2,.....,widthN] } ],
    );
    这里子表的设置只是最基本的,更多属性的资料可参阅 
    http://www.trirand.com/jqgridwiki/doku.php?id=wiki:subgrid
    View Code

    9.Get/Set 单元格的值

    获取某个单元格的值就调用getCell(rowid, iCol) 。
    iCol既可以是当前列在colModel中的位置索引也可以是name值。
    注意:在编辑行或者单元格时不能使用此方法,此时返回的并不是改变的值,而是原始值。
    设置某个单元格的值就调用setCell(rowid,colname, data, class, properties)。
    rowid:当前行id;
    colname:列名称,也可以是列的位置索引,从0开始;
    data:改变单元格的内容,如果为空则不更 新;
    class:如果是string则会使用addClass方法将其加入到单元格的css中,如果是array则会直接加到style属性中;
    properties:设置单元格属性colModel。
    当然也可以Get/Set 行或者列,在这里可查阅更多get/set/add的方法
    http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods
    View Code

    10.数据验证

    通过设置colModel的editrules属性,可以对输入的数据进行验证
    jQuery("#grid_id").jqGrid({
    ...
    colModel: [ 
        {name:'price', ..., editrules:{edithidden:true, required:true....}, editable:true },
    ]
    });
    下面则是可用的验证选项
    View Code

    11.设置条带状的列

    jQuery("#ghcs").jqGrid(
        'setGroupHeaders', { 
        //设置列头是否启用colSpan效果
        useColSpanStyle: false, 
        groupHeaders:[{
            startColumnName: 'colName', 
            //合并列组的第一个列名     
            numberOfColumns: number, 
            //合并列的数量    
            titleText: 'title' 
            //合并列的标题   
        },] 
    }
    View Code

    12.编辑器

    jqGrid的模板列自带了一些很基本的编辑器,
    包括:
    'text'单行文本框, 
    'textarea'多行文本框, 
    'select'下拉框, 
    'checkbox'复选框, 
    'password'密码框, 
    'button'按钮, 
    'image'图片按钮, 
    'file'文件上传框以及
    'custom'自定义编辑器。
    在colModel里设置edittype则可
    
    jQuery("#grid_id").jqGrid({
        ...
        colModel: [ 
            ... 
            {
                name:'price', 
                ..., 
                editable:true, 
                edittype:'text',
                editoptions: {
                    size:10,
                    maxlength: 15
                }
            },     
        ]   
    });
    其中editoption是对编辑器的一些设置,文本框就可以设置size,maxlength等;
    复选框可设置value ;
    ditoptions: { value:"Yes:No" }
    下拉框以这种形式
    editoptions: { value: “val1:text1; val2:text2; val3:text3” } 
    更多资料参阅 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules#edittype
    View Code

    13.模板列调用其他编辑器

    上面介绍的编辑器只是使用了html的表单元素而已,下面介绍的是调用插件。
    <script src="js/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
    <script type="text/javascript">
        function InitDatePicker(cl) {
            $(cl).click(function () {
                WdatePicker();
            });
        }
        jQuery("#grid_id").jqGrid({
            ...
            colModel: [{
                name:'date',
                editable:true, 
                edittype:'text',
                editoptions: {
                    dataInit:InitDatePicker
                }
            }] ,
        });
    </script>
    这里调用了My97DatePicker插件作为日历编辑器。
    如果想在一个模板列里放置多种控件,可以用一下方式
    这个其实是在grid的单元格内通过编辑其html来实现。
    jQuery("#grid_id").jqGrid({
        ...
        afterInsertRow: function (rowid, aData) {
            var controls=""; 
            //放置在模板里的控件
            $("#grid_id").jqGrid('setCell', rowid, 'tag', controls);
        }
    });
    View Code

    14.模仿Excel移动选择单元格

    设置单元格编辑模式后,可以通过上下左右的导航键跳到需要编辑的单元格,
    按回车进入编辑状态,按Esc键不保存更改内容,按回车保存更改内容
    jQuery("#grid_id").jqGrid({
        ...
        cellEdit:true,
        cellsubmit:'clientArray', //定义了单元格内容保存位置 默认值是'remote'
    });
     
    View Code
  • 相关阅读:
    CentOS安装扩展软件支持库
    SpringBoot 定时任务 @Scheduled cron表达式
    docker启动mysql 自定义配置文件
    Informix从一个表更新多选数据到另一个表
    maven构建web项目,用jetty测试的配置pom.xml
    STSdb数据库的实现使用类
    C#操作MySQL的类
    C#操作SQLServer2012类
    小米开源数据库<pegasus>简介
    Java虚拟机运行时内存区域简析
  • 原文地址:https://www.cnblogs.com/techliang666/p/9316664.html
Copyright © 2011-2022 走看看