2009-11-21 18 views
5

Cách đặt trống thay vì NaN trong ô jqGrid? Sử dụng trình định dạng? Có một ví dụ?Trống khi NaN trong ô jqGrid

+2

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

+0

+1 ở trên. raouf - Bạn có thể cung cấp thêm thông tin về vấn đề của mình không? Một số mẫu mã có lẽ cũng sẽ giúp ích. –

+0

Cảm ơn bạn Justin! Hiển thị dữ liệu số cơ sở dữ liệu trên jqgrid với trình định dạng: 'currency' trong colmodel hoạt động tốt cho các giá trị DBNull không. Nhưng khi giá trị là DBNull từ 'NaN' xuất hiện trong ô jqgrid. câu hỏi đặt ra là: Làm thế nào để tránh 'NaN' và đặt một khoảng trống (không gian) thay thế. – raouf

Trả lời

0

Trên máy chủ, trước khi bạn trả về dữ liệu dưới dạng XML/JSON/bất kỳ điều gì, hãy thử đặt giá trị DBNull bằng một chuỗi trống.

Ngoài ra, nếu nó có thể chấp nhận để hiển thị các giá trị NULL là 0, bạn có thể sửa đổi SQL của bạn cùng những dòng này:

SELECT IsNull(my_amount, 0) 
+1

Tôi nghĩ rằng giải pháp là trong tùy chọn định dạng của colmodel. Có hai cách: Định dạng được xác định trước và Tùy chỉnh. Trong trường hợp của tôi, tôi muốn sử dụng định dạng 'tiền tệ' được xác định trước, nhưng với khả năng trả về trống thay vì 'NaN' khi giá trị rỗng. Có vẻ như không có cách nào để tránh viết lại hàm định dạng tiền tệ custum của tôi.Cảm ơn bạn một lần nữa Justin. – raouf

+0

Không sao, chúc may mắn! –

0

tôi sẽ không viết lại định dạng tùy chỉnh - nhưng ghi đè lên nó (hoặc thực hiện một mới một)! Bằng cách đó, khi một phiên bản mới của jQgrid xuất hiện, bạn không ghi đè lên trình bao bọc tùy chỉnh của mình.

Ví dụ, người dùng của tôi không muốn nhìn thấy giá trị nếu nó là 0, vì vậy tôi làm điều này:

$.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); 
}; 

Nhưng tôi cũng có thể gọi nó là:

$.fn.fmatter.currencyNoZero 

Trong của bạn trường hợp, tôi sẽ làm điều này:

$.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

Đây là REALLY cũ nhưng các tài liệu jqGrid không có một câu trả lời dễ dàng và câu hỏi này kéo lên fi rst trong kết quả của Google khi tôi đang tìm kiếm câu trả lời tương tự.

tôi đã có thể hiển thị một ô trống thay vì một 0 khi sử dụng tùy chọn định dạng được xác định trước cho một số nguyên sử dụng mã này:

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

Các defaultValue chỉ được thiết lập để trống.

+1

Cảm ơn Chúa rằng có ai đó để ansawer "thực sự" câu hỏi cũ :). Bạn đã cứu cả ngày của tôi 3 năm sau đó. – elrado

+0

Thêm một cái nữa vào nhóm biết ơn. :) –