2013-12-11 7 views
2

Я хочу экспортировать все данные в jqxgrid в json и отправить его на другую страницу через AJAX. Моя проблема в том, что когда я нажимаю кнопку экспорта, данные в сетке и данные перед экспортом не совпадают. Он изменяет число с плавающей точкой на Interger. Вот мой код:Экспорт данных из jqxgrid

Javascript:

$('#export_bt').on('click', function(){ 
    var row = $("#jqxgrid").jqxGrid('exportdata', 'json'); 
    $('#debug').html(row); 
    console.log(row); 
}); 

var tableDatas = [ 
    {"timestamp":"06:00:00","A":99.49,"B":337.77,"C":155.98}, 
    {"timestamp":"07:00:00","A":455.67,"B":474.1,"C":751.68}, 
    {"timestamp":"08:00:00","A":1071.02,"B":598.14,"C":890.47} 
]; 

var tableDatafields = [ 
    {"name":"timestamp","type":"string"}, 
    {"name":"A","type":"number"}, 
    {"name":"B","type":"number"}, 
    {"name":"C","type":"number"} 
]; 

var tableColumns = [ 
    {"text":"Times","datafield":"timestamp","editable":"false","align":"center","cellsalign":"center","width":150}, 
    {"text":"A","datafield":"A","editable":"false","align":"center"}, 
    {"text":"B","datafield":"B","editable":"false","align":"center"}, 
    {"text":"C","datafield":"C","editable":"false","align":"center"} 
]; 

function setTableData(table_data,table_column,table_datafields) 
{ 
    sourceTable.localdata = table_data; 
    sourceTable.datafields = table_datafields; 
    dataAdapterTable = new $.jqx.dataAdapter(sourceTable); 
    $("#jqxgrid").jqxGrid({columns:table_column}); 
    $("#jqxgrid").jqxGrid('updatebounddata'); 
    $('#jqxgrid').jqxGrid('sortby', 'timestamp', 'asc'); 
    $("#jqxgrid").jqxGrid('autoresizecolumns'); 

    for(var i=0;i<table_column.length;i++){ 
    $('#jqxgrid').jqxGrid('setcolumnproperty',table_column[i].datafield,'cellsrenderer',cellsrenderer); 
    } 
} 

var cellsrenderer = function (row, columnfield, value, defaulthtml, columnproperties) { 
    if (value||value===0) { 
    return value; 
    } 
    else { 
    return '-'; 
    } 
}; 

var sourceTable ={ localdata: '', datatype: 'array'}; 

var dataAdapterTable = new $.jqx.dataAdapter(sourceTable); 
dataAdapterTable.dataBind(); 

$("#jqxgrid").jqxGrid({ 
    width: '500', 
    autoheight:true, 
    source: dataAdapterTable, 
    sortable: true, 
    columnsresize: false, 
    selectionmode: 'none', 
    columns: [{ text: '', datafield: 'timestamp', width:'100%' , editable: false, align:'center'}] 
}); 

setTableData(tableDatas,tableColumns,tableDatafields); 

Html:

<div id="jqxgrid"></div> 
<button id="export_bt">Export</button> 
<div id="debug"></div> 

http://jsfiddle.net/jedipalm/jHE7k/1/

+0

Я не вижу проблемы. Кажется, что ваш jsFiddle возвращает float, а не целое число. Может быть, команды que jqWidgets исправляют проблему в последней версии? – NLemay

ответ

0

Вы можете добавить тип данных в вашем исходном объекте, как показано ниже.

datafields: [{ "name": "timestamp", "type": "number" }] 

А также я предлагаю вам применить cellformat в определении столбца.

{ text: 'timestamp', datafield: 'timestamp', cellsalign: 'right', cellsformat: 'd' } 

возможные форматы можно увидеть here.

Надеюсь, что поможет

Смежные вопросы