首页 新闻 会员 周边

请问如何根据数据库查询的字段动态加载标题列

0
悬赏园豆:200 [已解决问题] 解决于 2014-12-11 11:40

jqgrid中,colNames 、colModel的值都是定死的,不能再改变,请问如何根据数据库查询的字段动态加载标题列,然后显示数据,谢谢!还望各位大神不吝赐教!

生来彷徨~的主页 生来彷徨~ | 初学一级 | 园豆:4
提问于:2014-12-11 01:14
< >
分享
最佳答案
0

如果是后台代码推出的,不需要在前台动态改变列数,我能不能说这个真的很简单。

收获园豆:150
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-12-11 10:47

求例子,谢谢!

生来彷徨~ | 园豆:4 (初学一级) | 2014-12-11 10:54

@chengli:你懂得用HTML写出来吗?

写得出来就行啊,将重复的那部份翻译成动态从数据库取就行了。

这个跟

<Table>

<% 此处循环 %>

<tr><td></td></tr>

<% 结束循环 %>

</table>

一样样啊。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-11 10:56

用jqgrid怎么写啊?根据数据库查询的字段动态加载标题列,然后显示数据

生来彷徨~ | 园豆:4 (初学一级) | 2014-12-11 10:58

@chengli: 我的意思是,不管是不是动态,你能不能当成静态的?

先写一个JQGRID出来?不要告诉我这个你不会?

写出来了,动态的就不是问题了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-11 11:03

@爱编程的大叔: 静态的会写,动态的不会,有点脑子不好使

生来彷徨~ | 园豆:4 (初学一级) | 2014-12-11 11:05

@chengli: 

你先把问题简化,就两列Col1, Col2,这样总会写了吧。

在程序员眼中,2代表无穷大。

返回的JSON你先用静态数据代替,正常运行后,再修改为NET代码动态创建。

jQuery("#list2").jqGrid({
       url:'server.php?q=2',
    datatype: "json",
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90},
           {name:'name',index:'name asc, invdate', width:100},
           {name:'amount',index:'amount', width:80, align:"right"},
           {name:'tax',index:'tax', width:80, align:"right"},        
           {name:'total',index:'total', width:80,align:"right"},        
           {name:'note',index:'note', width:150, sortable:false}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#pager2',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    caption:"JSON Example"
});
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false});

就比如上这个GRID,你先减少列至只有两列,然后,从后台提供数据。

先提供假的,静态数据。下面这是可以让上面的JQGRID运行起来的数据JSON。

<rows><page>1</page><total>2</total><records>13</records><userdata name='tamount'>3820.00</userdata><userdata name='ttax'>462.00</userdata><userdata name='ttotal'>4284.00</userdata><row id='13'><cell>13</cell><cell>2007-10-06</cell><cell><![CDATA[Client 3]]></cell><cell>1000.00</cell><cell>0.00</cell><cell>1000.00</cell><cell><![CDATA[]]></cell></row><row id='12'><cell>12</cell><cell>2007-10-06</cell><cell><![CDATA[Client 2]]></cell><cell>700.00</cell><cell>140.00</cell><cell>840.00</cell><cell><![CDATA[]]></cell></row><row id='11'><cell>11</cell><cell>2007-10-06</cell><cell><![CDATA[Client 1]]></cell><cell>600.00</cell><cell>120.00</cell><cell>720.00</cell><cell><![CDATA[]]></cell></row><row id='10'><cell>10</cell><cell>2007-10-06</cell><cell><![CDATA[Client 2]]></cell><cell>100.00</cell><cell>20.00</cell><cell>120.00</cell><cell><![CDATA[]]></cell></row><row id='9'><cell>9</cell><cell>2007-10-06</cell><cell><![CDATA[Client 1]]></cell><cell>200.00</cell><cell>40.00</cell><cell>240.00</cell><cell><![CDATA[]]></cell></row><row id='8'><cell>8</cell><cell>2007-10-06</cell><cell><![CDATA[Client 3]]></cell><cell>200.00</cell><cell>0.00</cell><cell>200.00</cell><cell><![CDATA[]]></cell></row><row id='7'><cell>7</cell><cell>2007-10-05</cell><cell><![CDATA[Client 2]]></cell><cell>120.00</cell><cell>12.00</cell><cell>134.00</cell><cell><![CDATA[]]></cell></row><row id='6'><cell>6</cell><cell>2007-10-05</cell><cell><![CDATA[Client 1]]></cell><cell>50.00</cell><cell>10.00</cell><cell>60.00</cell><cell><![CDATA[]]></cell></row><row id='5'><cell>5</cell><cell>2007-10-05</cell><cell><![CDATA[Client 3]]></cell><cell>100.00</cell><cell>0.00</cell><cell>100.00</cell><cell><![CDATA[no tax at all]]></cell></row><row id='4'><cell>4</cell><cell>2007-10-04</cell><cell><![CDATA[Client 3]]></cell><cell>150.00</cell><cell>0.00</cell><cell>150.00</cell><cell><![CDATA[no tax]]></cell></row></rows>

 

参考资料:http://www.trirand.com/blog/jqgrid/jqgrid.html

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-12-11 11:14

@爱编程的大叔: 谢谢!感激不尽!

生来彷徨~ | 园豆:4 (初学一级) | 2014-12-11 11:39
其他回答(3)
0

用ajax动态去取colName和colModel不就好了。。 

 
$.post('url', {}, function (response) {//reponse-回发数据
            var colN= response.colNames; //得到colNames
            var colM = response.colModel; //得到colModel
            $('#grid').jqGrid({//生成 grid
                colNames:colN, //根据回发数据设置
                colModel:colM //根据回发数据设置
            });
 
        })
收获园豆:50
问天何必 | 园豆:3311 (老鸟四级) | 2014-12-11 08:38

具体应该怎么弄啊?得到的response里面的JSON字符串应该是个什么样?求详细步骤,谢谢!

支持(0) 反对(0) 生来彷徨~ | 园豆:4 (初学一级) | 2014-12-11 09:42

@chengli:  这不跟你原来的格式一样的么。。 

像这种。 

 colNames: ['用户ID', '登陆名', '描述','sm'],//这里是显示的数据库表的字段名称  
            colModel: [  
                         { name: 'iUSERID', index: 'iUSERID', width: 50 },  
                            { name: 'sUserName', index: 'sUserName', width: 100 },  
                          
                            { name: 'sQuestion', index: 'sQuestion', width: 300 },  
                            { name: 'dtLastLoginTime', index: 'dtLastLoginTime', width: 120 },  
                          
                             
                      ],//这里是数据读取到的字段列名  
支持(0) 反对(0) 问天何必 | 园豆:3311 (老鸟四级) | 2014-12-11 09:47

@问天何必: 能给我一个例子参考吗?感谢感谢!

支持(0) 反对(0) 生来彷徨~ | 园豆:4 (初学一级) | 2014-12-11 09:49
0

如果是用在mvc中,那么可以直接封装为一个mvc 的helper,然后直接通过后台动态生成colModel和colName数据即可。基本思路和一楼大同小异。

幻天芒 | 园豆:37175 (高人七级) | 2014-12-11 08:51

不是MVC,具体应该怎么弄啊?得到的response里面的JSON字符串应该是个什么样?求详细步骤,谢谢!

支持(0) 反对(0) 生来彷徨~ | 园豆:4 (初学一级) | 2014-12-11 09:42

@chengli: 那就是一楼的方式了,从后台返回一个jgGridOptions对象,然后用js渲染即可。你可以对应jqGridOption创建实体类,然后序列化为json返回。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-12-11 11:16
0

你可以反序列化一下!

Mr.Brian | 园豆:1518 (小虾三级) | 2014-12-11 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册