2011-07-21 40 views
5

Trong định dạng của tôi, tôi đã có đoạn mã sau:jqGrid số định dạng sử dụng

formatter: { 
    number: { decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000' } 
}, 

và trong colModel của tôi, tôi có:

{ name: 'SalesPrice', index: 'SalesPrice', width: 90, align: 'left', formatter:'number', editable: true, editoptions: 
        { 
         readonly: true 
        } 
        } 

datatype của tôi được thiết lập để "địa phương"

Khi tôi lần đầu tiên hiển thị biểu mẫu, tôi nhận được "0,00" và không phải là "0,0000" như tôi đã hy vọng. Hơn nữa, trong chế độ chỉnh sửa nội tuyến, giá trị SalesPrice thay đổi tùy thuộc vào các ô khác trong lưới. Sau khi cập nhật giá trị SalesPrice được hiển thị dưới dạng số nguyên.

Tôi có thể làm gì sai?

EDIT: hoàn thành nhiều mã

$("#customerOrderLineList").jqGrid({ 
    //  url: 'someUrl', 
    datatype: 'local', 
    formatter: { 
     number: { decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000' } 
    }, 
    //  mtype: 'POST', 
    colNames: [ 'Part Number', 'Sales Price'], 
    colModel: [ 
        { name: 'PartNumber', index: 'PartNum', width: 90, align: 'left', editable: true, editoptions: 
        { 
         dataInit: function (el) { 
          $(el).autocomplete({ 
           source: "Autocomplete", 
           minLength: 1 
          }); 
         } 
        } 
        }, 

        { name: 'SalesPrice', index: 'SalesPrice', width: 90, align: 'left', formatter: 'number', 
         formatoptions: { decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000' }, editable: true, editoptions: 
        { 
         readonly: true 
        } 
        } 
      ], 
    pager: jQuery('#pager'), 
    rowNum: 10, 
    rowList: [5, 10, 20, 50], 
    sortable: true, 
    sortname: 'PartNum', 
    sortorder: "asc", 
    viewrecords: true, 
    imgpath: '', 
    autowidth: true, 
    onSelectRow: function (id, status) { 
     if (id && id !== lastsel) { 
      $('#customerOrderLineList').jqGrid('restoreRow', lastsel); 
      $('#customerOrderLineList').jqGrid('editRow', id, true); 
      lastsel = id; 
     } 
    }, 
    caption: 'Caption' 
}); 

Trả lời

6

Bạn không gửi mã đầy đủ của bạn vì vậy nó khó có thể nói vấn đề của bạn là gì. Chỉ cần nhìn vào the demo làm những gì bạn giải thích và không có vấn đề gì.

Tôi đã sử dụng formatoptions vì không rõ ràng cho tôi nơi bạn đặt giá trị formatter cho th number.

+0

Tôi đã theo dõi ví dụ tại đây http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter. Về cơ bản, tôi đã tuyên bố trình định dạng cho toàn bộ lưới chứ không phải cho một cột cụ thể. Sử dụng ví dụ cho các công trình trên tải ban đầu của lưới. Tuy nhiên, khi giá trị của SalesPrice thay đổi, tôi vẫn nhận được một số nguyên được trả về. Tôi sẽ cập nhật mã trong OP – DavidS

+0

Vấn đề với bản cập nhật SalesPrice không có liên quan gì đến định dạng, mặc dù một số có thể đã dự kiến ​​giá trị được chuyển thành "3" thành "được định dạng" là "3.000". Nhưng tôi đã tìm ra giải pháp cho vấn đề này. Vì vậy, thực sự vấn đề nổi bật duy nhất tôi có với trình định dạng có liên quan đến thực tế là tuyên bố trình định dạng trên toàn cầu dường như không hoạt động như mong đợi. Có lẽ tôi sai. – DavidS

+1

@DavidS: Bạn hiểu sai thông tin từ http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter. Tệp cụ thể ngôn ngữ ví dụ grid.locale-en.js xác định đối tượng '$ .jgrid' có nhiều thuộc tính bao gồm' $ .jgrid.formatter.number'. Ví dụ bạn có thể đặt '$ .jgrid.formatter.number.decimalPlaces = 4; $ .jgrid.formatter.number.defaultValue: '0.0000'; 'trước cuộc gọi của' $ ("# customerOrderLineList") .jqGrid ({...}); '. Bạn có thể ghi đè lên các thiết lập, nhưng không có tham số 'formatter' của jqGrid. – Oleg

Các vấn đề liên quan