最近做一个小项目,用到JQuery的jqGrid表格插件,可是,入门了半天,有一个问题一直让我头疼着:jqGrid的colModel属性不能缺少,网上的例子中,colNames 、colModel的值都是定死的,不能再改变的。
如下:
 colNames:['编号','姓名','密码','年龄','地址','出生日期'],    
    colModel:[    
        {name:'id',index:'id', width:90,sorttype:"int"},    
        {name:'username',index:'name', width:110,sorttype:"int"},    
       {name:'password',index:'password', width:80},    
        {name:'age',index:'age', width:80},      
        {name:'address',index:'address', width:80},     
        {name:'time',index:'time', width:80,sorttype:"date"}      
     ],    
......现在我想动态的显示列名,请问该怎么做啊?
详细:
页面的左部分显示了多个表及其字段,(表与表之间有关系的)以树形结构显示,各表名是父节点。用户想查看哪几个字段,checkbox选中此字段,然后点击查看。此时,表单及数据会显示在右边部分。就是这么一个问题!所以说这个表的列的个数不固定,列名也不固定。朋友们,咋办啊?求帮助!!!非常感谢!

解决方案 »

  1.   

    不好意思,补充一下,dataType:json,js做的,在action中可以拿到用户所选的列的集合。
      

  2.   

    这两个属性是不能改变值的  只能在页面加载时定义好
    我以前做的时候 用后台代码给前台的hidden赋值(根据类型定义显示的字段) 然后再colNames :$("#hiddenNames").val();//这里其实就是一个字符串
    colModel :$("#hiddenModels").val();所以你左边点击之后 必须使右边的页面刷新然后赋值 
      

  3.   


     $.post('url', {}, function (response) {//reponse-回发数据
                var colN= response.colNames; //得到colNames
                var colM = response.colModel; //得到colModel
                $('#grid').jqGrid({//生成 grid
                    colNames:colN, //根据回发数据设置
                    colModel:colM //根据回发数据设置
                });        })
      

  4.   

    2楼朋友的意思是说在后台将列名拼成colName所需要格式的字符串,放在页面的隐藏域中,然后再拿值。那如果字段的个数很长的话,是不是还得这样啊!
      

  5.   

    字符串长短不会有问题,你把整个html放在字符串里面也不会造成多大的负荷。