在背景网格中对自定义(货币)格式的列进行排序
Sorting custom (currency) formatted column in backgrid
我正在使用 Backgridjs 显示从 json 对象到 table 的数据。我目前正在使用格式化程序将字符串数字格式化为货币。一旦我这样做了,排序就不再正常工作,因为它排序为字符串而不是数字。如何在格式化列后启用背景网格排序?
Backgrid 支持数字,int,date/momentjs。找不到货币
的扩展名
这是我的格式化程序class
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawData) {
var re = /\-/;
if (rawData === "" || rawData == null) {
return "";
} else if (rawData.match(re)) {
return "-" + accounting.formatMoney(rawData.substr(1));
} else {
return accounting.formatMoney(rawData);
}
},
toRaw: function(formattedData) {
return formattedData;
}
}),
这是我的网格
var grid = new Backgrid.Grid({
collection: collection,
columns: [
{
name: "cost",
label: "Cost",
cell: "number",
formatter: currencyFormater
sortable: true
},
{
name: "type",
label: "Type",
cell: Backgrid.NumberCell,
sortable: true
}
]});
数据示例:
{ id: 1, cost: "150", type: 3 },
{ id: 2, cost: "12516.30", type: 2 },
{ id: 3, cost: "21400.85", type: 1 },
{ id: 4, cost: "146558.50", type: 1 },
{ id: 5, cost: "139982.75", type: 1 }
我最终使用 sortValue 根据值进行特定排序。在我的例子中,我将 parseFloat 与字符串值一起使用。
var grid = new Backgrid.Grid({
collection: collection,
columns: [
{
name: "cost",
label: "Cost",
cell: "number",
sortValue: function(model) {
return parseFloat(model.get("cost"));
},
formatter: currencyFormater
sortable: true
},
…
]});
我正在使用 Backgridjs 显示从 json 对象到 table 的数据。我目前正在使用格式化程序将字符串数字格式化为货币。一旦我这样做了,排序就不再正常工作,因为它排序为字符串而不是数字。如何在格式化列后启用背景网格排序?
Backgrid 支持数字,int,date/momentjs。找不到货币
的扩展名这是我的格式化程序class
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawData) {
var re = /\-/;
if (rawData === "" || rawData == null) {
return "";
} else if (rawData.match(re)) {
return "-" + accounting.formatMoney(rawData.substr(1));
} else {
return accounting.formatMoney(rawData);
}
},
toRaw: function(formattedData) {
return formattedData;
}
}),
这是我的网格
var grid = new Backgrid.Grid({
collection: collection,
columns: [
{
name: "cost",
label: "Cost",
cell: "number",
formatter: currencyFormater
sortable: true
},
{
name: "type",
label: "Type",
cell: Backgrid.NumberCell,
sortable: true
}
]});
数据示例:
{ id: 1, cost: "150", type: 3 },
{ id: 2, cost: "12516.30", type: 2 },
{ id: 3, cost: "21400.85", type: 1 },
{ id: 4, cost: "146558.50", type: 1 },
{ id: 5, cost: "139982.75", type: 1 }
我最终使用 sortValue 根据值进行特定排序。在我的例子中,我将 parseFloat 与字符串值一起使用。
var grid = new Backgrid.Grid({
collection: collection,
columns: [
{
name: "cost",
label: "Cost",
cell: "number",
sortValue: function(model) {
return parseFloat(model.get("cost"));
},
formatter: currencyFormater
sortable: true
},
…
]});