2011-07-21 22 views
5

, aşağıdaki kod var:jqGrid numarası biçimlendirici kullanımı

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

ve benim colModel ben vardır:

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

Benim veritipi

için "yerel" olarak ayarlanır

Formu ilk görüntülediğimde, umduğum gibi "0.00" değil "0.0000" aldım. Diğer taraftan, satır içi düzenleme modunda, SalesPrice değeri, ızgaradaki diğer hücrelere bağlı olarak değişir. Güncellemelerden sonra SalesPrice değeri bir tamsayı olarak gösterilir.

Neyi yanlış yapıyorum?

DÜZENLEME: Daha tam kod

$("#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' 
}); 

cevap

6

senin sorunun ne olduğunu söylemek zor sahibi olması için tam kod yayınlanmıştır yoktur. Sadece açıkladığınız şeyi yapan ve hiçbir problemi olmayan the demo'a bakın.

formatoptions kullandım çünkü number için formatter değerlerini ayarladığınız yer belirsizdi.

+0

Buradaki örnekte http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter. Temel olarak, belirli bir sütun yerine tüm ızgara için biçimlendiriciyi bildiriyordum. Verilen örneği kullanarak şebekenin ilk yükü üzerinde çalışır. Ancak, SalesPrice değerinin değiştiği zaman, hala bir tamsayı aldım. OP – DavidS

+0

kodunu güncelleştireceğim SalesPrice güncelleştirmesiyle ilgili sorun, biçimlendirmeyle ilgili bir şey yapmadı, ancak bazıları "3.000" olarak "biçimlendirilmiş" olmak üzere "3" olarak geçirilen değeri bekleyebilir. Ama bu soruna bir çözüm buldum. Yani gerçekten biçimlendirici ile ilgili sahip olduğum en önemli sorun, biçimlendiricinin global olarak bildirildiğinin beklendiği gibi çalışmadığı gerçeğiyle ilgilidir. Belki de ben hatalıyım. – DavidS

+1

@DavidS: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter adresindeki bilgileri yanlış anlıyorsunuz. Örneğin, dile özgü bir dosya olan grid.locale-tr.js, '$ .jgrid.formatter.number' dahil olmak üzere birçok özelliğe sahip $ .jgrid 'nesnesini tanımlar. Örneğin, '$ .jgrid.formatter.number.decimalPlaces = 4; $ .jgrid.formatter.number.defaultValue: '0.0000'; '' '' '' ('' customerOrderLineList '') çağrısından önce jqGrid ({...}); '. Ayarların üzerine yazabilirsiniz, ancak jqGrid’in 'formatter' parametresi yoktur. – Oleg