当前位置: 代码迷 >> Java Web开发 >> 100分 求思路, js 有关问题
  详细解决方案

100分 求思路, js 有关问题

热度:1588   发布时间:2013-02-25 21:17:43.0
100分 求思路, js 问题
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);}
  相关解决方案