如果是后台代码推出的,不需要在前台动态改变列数,我能不能说这个真的很简单。
求例子,谢谢!
@chengli:你懂得用HTML写出来吗?
写得出来就行啊,将重复的那部份翻译成动态从数据库取就行了。
这个跟
<Table>
<% 此处循环 %>
<tr><td></td></tr>
<% 结束循环 %>
</table>
一样样啊。
用jqgrid怎么写啊?根据数据库查询的字段动态加载标题列,然后显示数据
@chengli: 我的意思是,不管是不是动态,你能不能当成静态的?
先写一个JQGRID出来?不要告诉我这个你不会?
写出来了,动态的就不是问题了。
@爱编程的大叔: 静态的会写,动态的不会,有点脑子不好使
@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>
@爱编程的大叔: 谢谢!感激不尽!
用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 //根据回发数据设置 }); })
具体应该怎么弄啊?得到的response里面的JSON字符串应该是个什么样?求详细步骤,谢谢!
@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 }, ],//这里是数据读取到的字段列名
@问天何必: 能给我一个例子参考吗?感谢感谢!
如果是用在mvc中,那么可以直接封装为一个mvc 的helper,然后直接通过后台动态生成colModel和colName数据即可。基本思路和一楼大同小异。
不是MVC,具体应该怎么弄啊?得到的response里面的JSON字符串应该是个什么样?求详细步骤,谢谢!
@chengli: 那就是一楼的方式了,从后台返回一个jgGridOptions对象,然后用js渲染即可。你可以对应jqGridOption创建实体类,然后序列化为json返回。
你可以反序列化一下!