JQGrid getRowData error - PullRequest
       3

JQGrid getRowData error

0 голосов
/ 23 августа 2011

У меня есть следующая JQ-Grid с функцией форматирования, которая возвращает HTML в качестве значения столбца:

jQuery("#list").jqGrid({ 
      url:jsonUrl, 
      datatype: 'json', 
      mtype: 'GET', 
      colNames:['Id', 'Name', 'Phone', 'Action'], 
      colModel :[ 
         {name:'id', index:'id', sortable:true}, 
         {name:'name', index:'name', sortable:true},
         {name:'phone', index:'phone', sortable:false},

         {name:'details', index:'details', sortable: false,
              formatter:function(cellvalue,options,rowObject){
                  return "<p class='trigger'><a href='#'><img src='/images/actions.jpg' /></a></p><div class='toggle_container'><div class='block'><table class='action'><tr><td><a href='#'><img src='/images/open.gif' /></a></td><td><a href='#'><img src='/images/edit.gif' /></a></td><td><a href='#'><img src='/images/delete.gif' /></a></td></tr></table></div></div>"
              }
          }
         ] 

Позже я пытаюсь получить все данные столбца / строки и экспортировать их в Excel,Есть ли функция в JQ-Grid, которая позволяет экспортировать в Excel / PDF (к примеру, я использую JSP / JAVA).

Когда я пытаюсь сделать что-то вроде этого:

 var mya=new Array();
 mya=$("#list").getDataIDs();  // Get All IDs
 var data=$("#list").getRowData(mya[0]);     // Get First row to get the labels

Я получаю ошибку JavaScript:

 Message: 'l.p.colModel[...].name' is null or not an object
 URI: http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.1.2/js/jquery.jqGrid.min.js

1 Ответ

1 голос
/ 18 января 2012

Я думаю, что у меня может быть ответ на вашу проблему - или хотя бы обходной путь, которого будет достаточно. Посмотрите на JavaScript ниже. Этот подход я использую для извлечения данных из таблицы:

var sCell;
var aDataIDs = $Grid.getDataIDs();

//Loop through table rows
for (var i = 0; i < aDataIDs.length; i++) {

  try {
    //Get row
    var oRow = $Grid.getRowData(aDataIDs[i]);

  }
  catch (e) {
    //If problem then fall back to this
    for (var j = 0; j < _oJQGUserSettings.aColModel.length; j++) {
      if (j > 0) sb.append('\t'); //Add tab

      //Get cell data
      sCell = $Grid.getCell(aDataIDs[i], _oJQGUserSettings.aColModel[j].name);

      sb.append(sCell);  //Add data
    }
  }

Если вы помните, что sb - это класс построения строк javascript, а _oJQGUserSettings.aColModel - это просто моя инкапсуляция ColModel, то это, вероятно, должно дать вам то, что вам нужно с точки зрения извлечения данных из сетки по мере необходимости. (Затем я копирую его в буфер обмена, что позволяет мне вставлять содержимое сетки прямо в Excel - удобно!)

Я подозреваю, что есть ошибка в getRowData, которая выдается, когда не все столбцы отображаются пользователю. Однако я еще точно не выделил это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...