Экспорт данных из jqxgrid

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

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/


person Pariwat Tiprutree    schedule 11.12.2013    source источник
comment
Я не вижу проблемы. Ваш jsFiddle, похоже, возвращает числа с плавающей запятой, а не целое число. Может команды jqWidgets исправили проблему в последнем релизе?   -  person NLemay    schedule 31.01.2014


Ответы (2)


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

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

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

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

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

надеюсь, это поможет

person Sibeesh Venu    schedule 12.11.2015

Вы можете очень быстро экспортировать данные так же, как это id jqxGrid с

var rows = $("#jqxGrid").jqxGrid("getrows");

Это будет json-массив.

person Franz Anton Mesmer    schedule 25.02.2019