jQuery插件jqGrid动态获取列和列字段的方法


Posted in Javascript onMarch 03, 2017

本文实例讲述了jQuery插件jqGrid动态获取列和列字段的方法。分享给大家供大家参考,具体如下:

1、问题背景

jqGrid表格插件,利用自身方法获取表格的表头和表格字段;获取列名和列字段名显示在弹窗里,用复选框进行勾选

2、实现源码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>jqGrid动态获取列和列字段</title>
    <link rel="stylesheet" href="css/ui.jqgrid.css" rel="external nofollow" />
    <link rel="stylesheet" href="css/ui.jqgrid-bootstrap-ui.css" rel="external nofollow" />
    <link rel="stylesheet" href="css/bootstrap.css" rel="external nofollow" />
    <link rel="stylesheet" href="css/bootstrap-theme.css" rel="external nofollow" />
    <link rel="stylesheet" href="css/jquery-ui.css" rel="external nofollow" />
    <link rel="stylesheet" href="css/jquery-ui.theme.css" rel="external nofollow" />
    <script type="text/javascript" src="js/jquery-1.11.0.min.js" ></script>
    <script type="text/javascript" src="js/jquery-ui.js"></script>
    <script type="text/javascript" src="js/jquery.jqGrid.min.js" ></script>
    <script type="text/javascript" src="plugins/grid.setcolumns.js"></script>
    <style>
      th{
        border: 1px solid #ABABAB;
        line-height: 20px;
        vertical-align: middle;
      }
      td{
        line-height: 20px;
      }
    </style>
    <script>
      $(document).ready(function(){
        $("#jqTable").jqGrid({
          url:"data/student.json",
          height:380,
          datatype:"json",
          colNames:["序号","姓名","年龄","性别","QQ号","电话","地址"],
          colModel:[{
            name : 'id',
            index : 'id',
            label : '序号',
            width : 60,
            align:'center'
          },{
            name : 'name',
            index : 'name',
            label : '姓名',
            width : 120,
            align:'center'
          },{
            name : 'age',
            index : 'age',
            label : '年龄',
            width : 120,
            align:'center'
          },{
            name : 'sex',
            index : 'sex',
            label : '性别',
            width : 120,
            edittype : "select",
            formatter : 'select',
            editoptions : {
              value :'0:男;1:女;'
            },
            align:'center'
          },{
            name : 'qq',
            index : 'qq',
            label : 'QQ号',
            width : 120,
            align:'center'
          },{
            name : 'phone',
            index : 'phone',
            label : '电话',
            width : 120,
            align:'center'
          },{
            name : 'address',
            index : 'address',
            label : '地址',
            width : 200,
            align:'center'
          }],
          sortname : "id",
          sortorder : "desc",
          viewrecords : true,
          rownumbers:true,
          autowidth:true,
          jsonReader : {
            repeatitems : false
          }
        });
        var dialog = $("#dialog-column").dialog({
          autoOpen :false,
          modal : true,
          resizable : true,
          height: "auto",
          width: 400,
          align:'center',
          buttons: {
            "确定": function() {
              $(this).dialog( "close" );
            },
            "关闭": function() {
              $(this).dialog( "close" );
            }
          }
        });
        $("#column").button().on("click", function() {
          dialog.dialog("open");
          //获取列名
          var colNames=$("#jqTable").jqGrid('getGridParam','colNames');
          //获取列字段
          var colModel=$("#jqTable").jqGrid('getGridParam','colModel');
          var table = "";
          var newColumnName = [];
          var newColumnValue = [];
          for (var i=0;i<colNames.length;i++)
          {
            var columnHidden = colModel[i].hidden;
            var columnName = colModel[i].name;
            if(columnHidden==false && columnName != "rn")
            {
              newColumnName.push(colNames[i]);
              newColumnValue.push(columnName);
            }
            console.info(columnName);
          }
          for(var j=0;j<newColumnName.length;j++)
          {
            if(j%5==0)
            {
              table += "<tr>";
            }
            table += "<td><input type='checkbox' id='"+newColumnValue[j]+"' name='column' checked='checked'><label for='"+newColumnValue[j]+"'>"+newColumnName[j]+"</label></td>";
            if((j+1)%5==0)
            {
              table += "</tr>";
            }
          }
          $("#tableColumn").empty().append(table);
        });
      });
    </script>
  </head>
  <body>
    <div>
      <table id="jqTable" class="table"></table>
    </div>
    <div>
      <button id="column" type="button">显示</button>
    </div>
    <div id="dialog-column" title="设置列">
      <table id="tableColumn" style="width: 100%; height: 100px;">
      </table>
    </div>
  </body>
</html>

3、实现结果

(1)初始化

jQuery插件jqGrid动态获取列和列字段的方法

(2)单击按钮

jQuery插件jqGrid动态获取列和列字段的方法

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
写入cookie的JavaScript代码库 cookieLibrary.js
Oct 24 Javascript
javascript 的Document属性和方法集合
Jan 25 Javascript
JS高级笔记
Jul 13 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
Aug 28 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
Augularjs-起步详解
Jul 08 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 Javascript
WebWorker 封装 JavaScript 沙箱详情
Nov 02 Javascript
AngularJS表格样式简单设置方法示例
Mar 03 #Javascript
AngularJS表格添加序号的方法
Mar 03 #Javascript
JS实现双击内容变为可编辑状态
Mar 03 #Javascript
jquery表单验证实例仿Toast提示效果
Mar 03 #Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
Mar 03 #Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 #Javascript
angularjs实现下拉列表的选中事件示例
Mar 03 #Javascript
You might like
PHP mail()函数使用及配置方法
2014/01/14 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
js查找节点的方法小结
2015/01/13 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
Shell编程面试题
2016/05/29 面试题
积极分子思想汇报
2014/01/04 职场文书
网络营销策划方案
2014/06/04 职场文书
宣传普通话标语
2014/06/27 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
小学三年级作文之写景
2019/11/05 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
Vue全局事件总线你了解吗
2022/02/24 Vue.js
Python 视频画质增强
2022/04/28 Python
设置IIS Express并发数
2022/07/07 Servers