3

jqxGridで、JSON データから新しい計算列を追加するにはどうすればよいですか?

私の JSON データにはフィールドbaseQuantityunitCost. totalCostbaseQuantity * unitCostと呼ばれる新しいフィールドを追加したいと思います。

loadComplete を使用してデータを追加しようとしていますが、うまくいかないようです。

私ができる別の方法は、objData をループして、計算された値を新しいフィールドに挿入することです。しかし、それ以外に、jqxGridのAPIを介してそれを行う方法はありますか?

var jsonString = [{ "baseQuantity":"1", "unitCost":"2"}, { "baseQuantity":"3", "unitCost":"4"}];
var objData = $.parseJSON(jsonString);

var srcData = {
        datatype: "json",
        datafields: [ 
            { name : 'baseQuantity', type : 'number' },
            { name : 'unitCost', type : 'number' }
        ],
        localdata : objData
    };

var adapterData =  new $.jqx.dataAdapter(srcData, {
    loadComplete: function (records) {
        var modifiedDataArray = new Array();
        for (var i = 0; i < records.length; i++) {

            var modifiedData = records[i];
            modifiedData.totalPayment = modifiedData.baseQuantity * modifiedData.unitCost;

            modifiedDataArray.push(programme);
        }
        return modifiedDataArray;
    }
});

$('div#jqxGrid').jqxGrid({
    width: '100%',
    source: adapterData,
    theme: getTheme(),
    pageable: true,
    autoheight: true,
    sortable: true,
    altrows: true,
    columns: [
        { datafield: 'baseQuantity', text: 'Base Qty.', width: 120 }
        { datafield: 'unitCost', text: 'Unit Payment' , width: 120 }
    ]
});
4

2 に答える 2

3

cellrenderer 関数を使用します。

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxgrid/jquery-grid-api.htm

{ text: 'totalCost', datafield: 'totalCost', width: 70, cellsalign: 'right', columntype: 'number',
  cellsrenderer: function (row, columnfield, value, defaulthtml, columnproperties) {
            var rowData = $("#jqxGrid").jqxGrid('getrowdata', row);
            return rowData.baseQuantity * rowData.unitCost;
        }   
}
于 2013-08-14T16:23:24.370 に答える
0

イベント「loadComplete」ではなく「beforeLoadComplete」を使用してください。例を次に示します。

var dataAdapter = new $.jqx.dataAdapter(source,
    {
        beforeLoadComplete: function (records) {
            records[0]['firstname'] = "Michael";
            return records;
        }
    }
);

すべてのレコードをループして、計算列を生成できます。これは、彼らがここで提供していると思われる公式の解決策です: http://www.jqwidgets.com/community/topic/computed-column/

于 2013-10-10T20:23:16.027 に答える