2012-02-14 11 views
8

Używam typu 'liczba' do wprowadzania liczb zmiennoprzecinkowych do siatki jqGrid. Jestem w stanie sformatować pływaki do renderowania za pomocą przecinka (używamy komandosów w Europie jako separatora dziesiętnego). Jednak pola wejściowe (formularz edycji lub wbudowany) nadal zakładają, że , które wprowadziły liczby zmiennoprzecinkowe, używają kropki, a nie przecinka.jqGrid: Format liczbowy z przecinkiem w postaci kropki dziesiętnej

formatoptions: {decimalSeperator : ','} 

wydaje się wpływać na renderowanie, ale nie na walidację danych wejściowych.

Jakieś rozsądne opcje tutaj?

Odpowiedz

7

Można tworzyć własne niestandardowe formaty.

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter

Przewodnik wyjaśnia to dobrze. Musisz utworzyć formmater i unformmater do edycji.

Tworzenie funkcji formatowania tak:

<script> 
    jQuery("#grid_id").jqGrid({ 
    ... 
     colModel: [ 
      ... 
      {name:'price', index:'price', width:60, align:"center", editable: true, formatter:numFormat, unformat:numUnformat}, 
      ... 
     ] 
    ... 
    }); 

    function numFormat(cellvalue, options, rowObject){ 
     return cellvalue.replace(".",","); 
    } 

    function numUnformat(cellvalue, options, rowObject){ 
     return cellvalue.replace(",","."); 
    } 
</script> 

Można również dołączyć $ lub inne formatowanie w tych funkcji.

+0

Nota Bene: Tysiąc konwerterów separatorowych jest miejscem dla kontynentów, gdy używa się anglo-saksonów "," – nicolallias

+0

To nie odpowiadałoby na pytanie zadane przez właściciela pytania. – Jpepper

+1

Dlatego jest to komentarz; jeśli zachowasz separator angielskiego tysiąca, otrzymasz bzdury dla dowolnej liczby notacji, np. np. 12 345 678,9 -> 12 345 678,9 zamiast prawidłowego (i wymaganego właściciela) 12345678,9 – nicolallias