1

Я использую jqGrid для отображения данных, где некоторые поля могут быть пустыми в базе данных. При наличии нулей, я получаю ошибку, Ссылка на объект не установлена ​​в экземпляр объекта.Ошибка jqGrid, когда данные равны нулю

Я добавил код для изменения нуля в строку, как показано ниже, но не отображается jqGrid:

<script type="text/javascript"> 
     $(document).ready(function() { 
     $('#list').jqGrid({ 
      caption: "MM", 
      url: '@Url.Action("GetAll", "Grid")', 
      datatype: 'json', 
      jsonReader: { 
       root: "Rows", 
       page: "Page", 
       total: "Total", 
       records: "Records", 
       repeatitems: true, 
       id: "Id", 
       cell: "RowCells" 
      }, 
      mtype: 'POST', 
      colNames: ['Serial'], 
      colModel: [ 
       { 
        name: 'Serial', index: 'Serial', align: 'center', width: 60, formatter: nullformatter 
       } 
      ], 
      pager: $('#pager'), 
      rowNum: 10, 
      rowList: [10, 20, 50, 100], 
      sortname: 'Id', 
      sortorder: 'desc', 
      viewrecords: true, 
      altRows: true, 
      shrinkToFit: false, 
      width: '1041', 
      height: 'auto', 
      hidegrid: false, 
      direction: "rtl", 
      gridview: true, 
      rownumbers: true, 
      footerrow: true, 
      loadComplete: function() { 
       $("tr.jqgrow:odd").css("background", "#E0E0E0"); 
      }, 
      loadError: function (xhr, st, err) { 
       jQuery("#rsperror").html("Type: " + st + "; Response: " + xhr.status + " " + xhr.statusText); 
      } 
     }) 
      var nullformatter = function (cellvalue, options, rowobject) { 
       alert('cell value==>>' + cellvalue); 
       if (cellvalue == undefined || isnull(cellvalue) || cellvalue == 'NULL' || cellvalue.trim().length == 0) { 
        cellvalue = ' '; 
       } 
       return cellvalue; 
      }; 
    }) 
</script> 
+0

Возможно, причина в использовании функции isnull? Нет стандартной функции JavaScript 'isnull'. Вы каким-то образом определили его? Вы должны попытаться удалить часть '|| isnull (cellvalue) 'или просто заменить тело на' return cellvalue == null || cellvalue === "NULL"? "": cellvalue; 'Test_ cellvalue == null' совпадает с' cellvalue === null || cellvalue === undefined'. – Oleg

+0

@Oleg Я использую его, но не работаю –

+0

@ О моей функции не вызывать по форматированию. –

ответ

0

Вы можете добавить ниже условия ,. его работы для меня.

var nullformatter = function (cellvalue, options, rowobject) { 
      if (cellvalue == undefined || isnull(cellvalue) || cellvalue == 'NULL' || cellvalue.trim().length==0) 
      { 
       cellvalue = ' '; 
      } 
      return cellvalue; 
     } 

Если вышеуказанное состояние не работает, чтобы предупредить значение ячейки.

alert('cell value==>>'+cellvalue); 

После этого вы исправите его.

или попытаться следовать условию

if(null!=cellvalue && cellvalue.length>0){ 
    return cellvalue; 
}else{ 
     return " "; 
} 
+0

Где я использую оповещение? –

+0

before if statement ... Предположим, что объект показывает объект .... use follow alert (JSON.stringify (cellvalue)); –

+0

предупреждение ('значение ячейки == >>' + JSON.stringify (cellvalue)); –

0

Если вы используете var nullformatter = function (cellvalue, options, rowobject) {...} синтаксис, то вы должны переместить определение nullformatterперед тем использование (перед вами обрешетка сетки с $('#list').jqGrid({...});). Вы используете текущий код formatter: undefined. Только если вы используете function nullformatter (cellvalue, options, rowobject) {...}, вы можете определить функцию ниже использования.

+0

@mahdisdezfouli: Посмотрите демо-версию http://jsfiddle.net/OlegKi/u9x2fcz1/ 6/он использует ваш код и некоторые тестовые данные. Он правильно загружает данные. Я не вижу никаких проблем. Вы должны сравнить его с кодом и данными, полученными с сервера. (демонстрационная функция JSFiddle echo, которая позволяет имитировать ответы JSON с сервера) – Oleg

+0

жаль, что эта ошибка может быть бит NULL. потому что в db существует NULL. и в демо, когда я меняю (null в NULL), это не отображается. –

+0

@mahdisdezfouli: Добро пожаловать! Я рекомендую вам использовать [Fiddler] (http://www.telerik.com/fiddler) для создания трассировки HTTP или, по крайней мере, для инструментов разработчика IE/Chrome/Firefox (нажмите F12 для запуска). Если вы увидите полную связь между сервером и jqGrid, вы наверняка решите проблему или, по крайней мере, включите JSON, который сервер в демо http://jsfiddle.net/OlegKi/u9x2fcz1/6/, который я вам разместил. Я лично часто использую Fiddler. – Oleg