2009-11-21 1 views
5

Как установить пустой вместо NaN в ячейках jqGrid? Использование форматирования? Есть ли пример?Пустой, когда NaN в ячейках jqGrid

+2

http://catb.org/~esr/faqs/smart-questions.html#beprecise –

+0

+1 к вышеуказанному. raouf - Можете ли вы предоставить дополнительную информацию о своей проблеме? Некоторые образцы кода, вероятно, также помогут. –

+0

Спасибо, Джастин! Отображение числовых данных базы данных в jqgrid с форматированием: «currency» в colmodel отлично работает для значений DBNull. Но когда значение DBNull, в ячейке jqgrid появляется слово «NaN». возникает вопрос: как избежать «NaN» и вместо этого положить пробел. – raouf

ответ

0

На сервере перед возвратом данных в формате XML/JSON/независимо, попробуйте установить значения DBNull равными пустой строке.

В качестве альтернативы, если это приемлемо для отображения NULL значения как 0, вы можете изменить ваш SQL вдоль этих линий:

SELECT IsNull(my_amount, 0) 
+1

Я думаю, что решение находится в опции форматирования colmodel. Существует два способа: предопределенный и пользовательский форматирование. В моем случае я хочу использовать предопределенный форматте валюты, но с возможностью вернуть пустой, а не «NaN», когда значение равно null. Кажется, что нет способа избежать переписывания моей функции форматирования валюты custum. Спасибо снова Джастину. – raouf

+0

Нет проблем, удачи! –

0

Я бы не переписать пользовательский форматировщик - но переопределить его (или сделать новый один)! Таким образом, когда выйдет новая версия jQgrid, вы не перезаписываете свою пользовательскую оболочку.

Например, мои пользователи не хотят, чтобы увидеть значение, если это 0, так что я делаю это:

$.fn.fmatter.currency = function (cellval, opts) { 
    if (cellval == 0) { 
     return ''; 
    } 
    var op = $.extend({},opts.currency); 
    if(!isUndefined(opts.colModel.formatoptions)) { 
     op = $.extend({},op,opts.colModel.formatoptions); 
    } 
    if(isEmpty(cellval)) { 
     return op.defaultValue; 
    } 
    return $.fmatter.util.NumberFormat(cellval,op); 
}; 

Но я мог бы также назвать его:

$.fn.fmatter.currencyNoZero 

В вашей случае, я хотел бы сделать это:

$.fn.fmatter.currency = function (cellval, opts) { 
    if (cellval == null) { 
     return ''; 
    } 
    var op = $.extend({},opts.currency); 
    if(!isUndefined(opts.colModel.formatoptions)) { 
     op = $.extend({},op,opts.colModel.formatoptions); 
    } 
    if(isEmpty(cellval)) { 
     return op.defaultValue; 
    } 
    return $.fmatter.util.NumberFormat(cellval,op); 
}; 
6

Это действительно старое, но документация jqGrid не имеет простой ответ на этот вопрос и тянет фи в результатах Google, когда я искал тот же ответ.

Я был в состоянии отобразить пустую ячейку вместо 0 при использовании предопределенной опции форматирования для целого, используя этот код:

{ name: 'Quantity', formatter: 'integer', formatoptions: { defaultValue: ''} } 

The defaultValue просто установлен пустым.

+1

Слава Богу, что был кто-то, кто просил «действительно» старый вопрос :). Ты спас мой день даже через три года. – elrado

+0

Добавьте еще одну благодарную группу. :) –