2013-06-10 2 views
2

Я использую JQGrid, и я получаю Null, отображаемый в сетке, поскольку он исходит из БД. Я могу изменить запрос, чтобы вернуть значение «Пустое».JQGRID show blank вместо Null

Но я пытаюсь обрабатывать JQGrid. Как сделать replace null by blank values в сетке.

Я не хочу показывать NULL пользователям, а не показывать пустое.

Как достичь этого в JQGrid?

Благодаря

ответ

6

Это, наверное, лучшее, что вы справиться с этим на стороне сервера, но если вы хотите сделать это в jqGrid, вы могли бы использовать custom formatter, который преобразует нуль в пустую строку. (Я не уверен, если вы на самом деле получить обратно значение null или строки "NULL", поэтому я обращался оба случая):

var nullFormatter = function(cellvalue, options, rowObject) { 
    if(cellvalue === undefined || isNull(cellvalue) || cellvalue === 'NULL') { 
     cellvalue = ''; 
    } 

    return cellvalue; 
} 

$("#myGridContainer").jqGrid({ 
    .... 
    colModel: [{ 
     label: 'Name', 
     name:'name', 
     index:'name', 
     formatter:nullFormatter 
    }, { 
     label: 'Next Column', 
     name:'nextCol', 
     index:'nextCol', 
     formatter: nullFormatter 
    }, ...], 
    .... 
} 
+2

'' null' и undefined' должна быть преобразована автоматически [скрипка] (http://jsfiddle.net/UG223/) – Andreas

+1

Я уверен, что * код сервера * return '" null "или" NULL "вместо" null ", который соответствует формату JSON. Таким образом, код сервера имеет ошибку. Исправление кода сервера с помощью функции [ISNULL] [1] SQL или другое исправление кода было бы лучшим решением. Если использовать пользовательский форматтер, то параметр 'aotoencode: true' не будет работать для столбца. Я бы рекомендовал включить явный вызов '$ .jgrid.htmlEncode' в форматировщик 'nullFormatter' и определить функцию [unformat] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter#unformatting) слишком. – Oleg

3

У меня была такая же проблема.

Кроме того, я хотел jqGrid, чтобы показать свои цифры с тысячами сепараторов и 2 знака после запятой, но при использовании по умолчанию 'number' форматировщика Вызванного любые обнуляет (из базы данных), чтобы отображаться как «0.00» вместо того, чтобы оставить пустыми.

$("#tblListOfRecords").jqGrid({ 
    ... 
    colModel: [ 
     { name: "SomeNumber", formatter: 'number', sorttype: "integer", formatoptions: { decimalPlaces: 2 } } 
    ] 
    ... 

Это было не совсем то, что я хотел.

Моего решения было написать свой собственный форматировщик:

$("#tblListOfRecords").jqGrid({ 
    ... 
    colModel: [ 
     { name: "SomeNumber", formatter: formatNumber} 
    ] 
}); 

function formatNumber(cellValue, options, rowdata, action) { 
    // Convert a jqGrid number string (eg "1234567.89012") into a thousands-formatted string "1,234,567.89" with 2 decimal places 
    if (cellValue == "") 
     return ""; 
    if (cellValue == null || cellValue == 'null') 
     return ""; 

    var number = parseFloat(cellValue).toFixed(2);   // Give us our number to 2 decimal places 
    return number.toLocaleString();       // "toLocaleString" adds commas for thousand-separators. 
} 
+0

cellValue вызовет проблему, должна быть ячейка ... иначе это работает для меня! – IlludiumPu36

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