数据为空时jqGrid错误

时间:2015-04-28 08:10:36

标签: jquery model-view-controller jqgrid jqgrid-formatter mvcjqgrid

我正在使用jqGrid显示数据,其中某些字段在数据库中可能为null。如果存在空值,则会收到错误,对象引用未设置为对象的实例。

我已经添加了将null更改为string的代码,如下所示,但是没有显示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>

2 个答案:

答案 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 " ";
 }

答案 1 :(得分:0)

如果您使用var nullformatter = function (cellvalue, options, rowobject) {...}语法,那么您必须在使用之前移动nullformatter 的定义(在使用$('#list').jqGrid({...});创建网格之前)。您当前的代码使用formatter: undefined。只有当您使用function nullformatter (cellvalue, options, rowobject) {...}时,您才能定义使用情况下面的函数。