2016-05-26 13 views
0

jqGridに問題があります。4.6.0 行データを取得しようとすると、各データが文字列に変換されます。これらを解析して実際のintまたはboolean奇妙である何の値は、私は、カスタムフォーマッタ内rowobjectを見たときrowdataがここ JqGrid getRowdataは、行のセル値を文字列として返します

正しいが、あなたの代わりに getLocalRow方法を使用する必要がありますサンプルコードと私は

var myformatter = function (cellval, options, rowObject) 
    { 
// rowObject is correct here {id: 1, Name: "test1", IsActive: true, Count: 10} 
    var active = rowObject.IsActive;// here active is true/false which is good 
    var count = rowObject.Count; // here count is 10,20,30 which is good 
    if(active) 
    { 
     // do what ever 
    } 
     return cellval; 
    } 
    var mydata = [ 
     {id:1, Name: "test1", IsActive: true, Count: 10}, 
     {id:2, Name: "test2", IsActive: false, Count: 20}, 
     {id:3, Name: "test2", IsActive: false, Count: 30} ]; 

     var grid = $("#list").jqGrid({ 

       datatype: "local", 
       data: mydata, 
       height: "auto", 
       colNames: ['id', 'Name','Is Active','Count'], 
       colModel :[ 
        {name:'id', index:'id', width:55}, 
        {name:'Name', index:'Name', width:90}, 
        {name:'IsActive', index:'IsActive', width:90, editable: true ,formatter:myformatter}, 
        {name:'Count', index:'Count', width:90, editable: true} 

       ], 
       pager: '#pager', 
       rowNum:10, 
       rowList:[10,20,30], 
       sortname: 'idcustomers', 
       sortorder: 'asc', 
       viewrecords: true, 
       gridview: true, 
       caption: 'Customers', 
       cellEdit: true, 
       cellsubmit: 'clientArray', 
        }); 
var row = $('#list').jqGrid('getRowData', 1); 

// row is: {id: "1", Name: "test1", IsActive: "true", Count: "10"} 
// What I was expecting {id: 1, Name: "test1", IsActive: true, Count: 10} 

答えて

2

を作成したサンプルのためjsfiddleリンクであるようだということですgetRowDataあなたの問題を解決してください。 getRowData<td>要素からテキストを取得することを理解することが重要です。したがって、標準タイプのデータは常に文字列です。メソッドgetLocalRowは、dataの内部要素への参照を元のデータで取得するだけです。

さらに1つのコメント:カスタムフォーマッタを定義する場合、常にunformatterunformatコールバック)フォーマッタを定義することをお勧めします。

データの編集を使用していることがわかります。標準的な編集では、変更するデータのタイプが変更されます。したがって、以前と同じ問題が発生します。無料のjqGridを使用すると、列にconvertOnSaveコールバックを指定することで問題を解決できます。詳細については、the wikiの記事を参照してください。さらに、無料のjqGridは標準の列テンプレートをサポートしているため、ブール値、整数および数値のデータ変換が簡単になります。 [Count]列にtemplate: "integer"プロパティを追加し(テンプレート定義hereを参照)、template: "booleanCheckbox"を追加することができます(here参照)。たとえば、the demoをデバッグし、編集後にdataのプロパティの種類が正しく保持されることを確認できます。

+0

ありがとうございました。あなたの発言については、これはあなたが簡単に答えるようなあなたのために作成した迅速かつ汚れたデモです。しかし、私の本当のものは、よりコンパクトであり、アンフォーマットやその他のものに関して必要なものはすべて持っています。 –

+0

@AmeteBlessed:ようこそ! – Oleg

関連する問題