- JScript code
function createSimpleTable(data, id) { var option = {}; option.columns = [ [] ];//表头 var datas = { "total" : data.respcount[0], "rows" : [] };//数据 var avgW = 960 / data.field[0].length; if (data.respcount[0] == 0) { for ( var i = 0; i < data.field[0].length; i++) { var field = { field : 'q_' + i, title : data.field[0][i], width : avgW, align : 'center' }; option.columns[0].push(field); } } else { for ( var j = 0; j < data.data.length; j++) { var onerow = {}; for ( var i = 0; i < data.field[0].length; i++) { if (j == 0) { var field = { field : 'q_' + i, title : data.field[0][i], width : avgW, align : 'center', sortable : true }; option.columns[0].push(field); } var d = !isNaN(Number(data.data[j][i]))?Number(data.data[j][i]):data.data[j][i]; onerow['q_' + i] = d; } datas.rows.push(onerow); } } $('#' + id).datagrid(option);//生成表头 $('#' + id).datagrid('loadData', datas);//生成数据}
function createSimpleTable(data, id) 参数data是ajax返回的查询数据,id是生成table的id
现在的问题是:
1。返回数据其中的一个字段是时间,格式是YYYY-MM-DD HH24:MI:SS 比其他字段长,但是现在每个<td>都一样的宽度,有的多了,时间字段那个显示不全,怎么改可以让时间字段显示全,或者能根据数据长度自动调节最好
2.给我介绍下这个js,别人写的 还不是很懂
------解决方案--------------------------------------------------------
这个JS脚本,借助了jQuery的一个插件:datagrid,也就是最后两行代码干的事情。
楼主需要去了解下这个插件自身的参数能力,看是否支持自适应宽度(一般来说希望渺茫)。
这段代码基本上就三个部分:
if (data.respcount[0] == 0) {
—— 这段代码似乎是处理空数据行的情况
} else {
—— 这段代码处理有数据行,就循环生成datagrid插件所需的二维数组
$('#' + id).datagrid(option);//生成表头
$('#' + id).datagrid('loadData', datas);//生成数据
—— 借助datagrid插件生成表格
var avgW = 960 / data.field[0].length;
960 估计是按照1024的屏幕标准宽度,然后去掉左右两侧的一些边距(比如滚动条啥的)得来的,不过我们一般是用1002。
------解决方案--------------------------------------------------------
这个有一定可能性,关键代码是这段:
- JScript code
if (j == 0) { var tmp = avgW; // 设个临时值 if (data.field[0][i].indexOf('时间') >=0 ) tmp = 100; // 按需修改 var field = { field : 'q_' + i, title : data.field[0][i], width : tmp, // 改为该临时值 align : 'center', sortable : true }; option.columns[0].push(field);}
------解决方案--------------------------------------------------------
用title判断不太好,因为是通用的,所以title很有可能包含时间两个文字,但是数据不是时间类型的,所以用正则判断数据是否符合时间类型可能更通用一些
借用LS的代码
- JScript code
vat regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/;if (j == 0) { var tmp = avgW; // 设个临时值 //if (data.field[0][i].indexOf('时间') >=0 ) tmp = 100; // 按需修改 if (regex.test(data.data[j][i])) tmp = 100; var field = { field : 'q_' + i, title : data.field[0][i], width : tmp, // 改为该临时值 align : 'center', sortable : true }; option.columns[0].push(field);}