如何在Webix DataTable页脚使用自定义函数实现SUM(votes)/SUM(rank)计算
Webix DataTable 实现自定义页脚计算 SUM(votes)/SUM(rank)
要在example列的页脚中实现SUM(votes)/SUM(rank)的自定义计算,你可以利用Webix DataTable的自定义footer函数,结合数据集的summarize方法获取多列聚合值后运算。以下是具体实现方案:
核心实现代码
修改example列的footer属性为自定义函数,直接在函数内完成双列求和与比值计算:
webix.ui({ view: "datatable", columns: [ { id: "votes", header: "投票数", footer: "sum" }, { id: "rank", header: "排名", footer: "sum" }, { id: "example", header: "自定义计算列", footer: function() { // 获取当前表格数据集 const data = this.data; // 计算votes列总和 const sumVotes = data.summarize(item => item.votes, "sum"); // 计算rank列总和 const sumRank = data.summarize(item => item.rank, "sum"); // 处理除数为0的边界情况 if (sumRank === 0) { return "N/A"; } // 计算比值并保留两位小数 const ratio = (sumVotes / sumRank).toFixed(2); // 复用你现有的货币格式化逻辑(替换为你的mySummColumn处理方式) return webix.i18n.numberFormat(ratio) + " $"; } } ], data: [ { votes: 100, rank: 5 }, { votes: 200, rank: 10 }, { votes: 150, rank: 5 } ] });
关键说明
- 双列聚合计算:通过
data.summarize()方法分别提取votes和rank列的数值,指定聚合类型为sum得到两列总和。 - 边界值处理:必须判断
sumRank是否为0,避免出现Infinity或NaN的无效结果。 - 格式化复用:如果需要沿用你已有的
mySummColumn货币格式化逻辑,直接将计算后的ratio传入该函数处理即可(若原函数仅支持求和结果,可调整参数适配单个数值)。 - 实时更新:表格数据新增、编辑或删除时,Webix会自动重新调用footer函数更新计算结果,无需额外绑定事件。
适配现有mySummColumn的示例
若你的mySummColumn是专门的求和格式化函数,可拆分为通用格式化函数复用:
// 独立的货币格式化函数 function formatCurrency(value) { return webix.i18n.numberFormat(value) + " $"; } // 在footer中调用 footer: function() { // ... 双列求和逻辑 return formatCurrency(ratio); }
内容的提问来源于stack exchange,提问作者Vlad
相关产品推荐
相关产品推荐

