【发布时间】:2016-07-06 16:43:54
【问题描述】:
我正在使用 datatables.net 插件执行一些 ASP.NET gridview 转换。我为什么要这样做的答案更多地涉及并且可以辩论。但是,我需要一些帮助来解决我遇到的问题之一。
使用Javascript转换页面上的gridview其实很简单,效果很好。主要问题是我希望在数据表的主体内有一个固定的“总”行(页脚),以便它像表的其余部分一样保持响应。
我尝试使用代码隐藏添加页脚,我可以用总数据填充该页脚,但它对表格的其余部分没有响应。我假设是因为<tfoot> 在<tbody> 之外。
使用 javascript,我已经成功添加了一个新的数据表行,并且可以将数据输出到控制台,但是我无法使用对象数据填充添加的行。
Javascript:
var sum;
$(document).ready(function () {
var table = $('#cphPage_gvTaxColl').DataTable();
//convert string to int
var intVal = function (i) {
var j = $("<span/>");
var txt = j.html(i).text();
// alert('txt :' + txt);
var myVal = typeof txt === 'string' ?
parseFloat(txt.replace(/[^\d.-]/g, '')) :
typeof txt === 'number' ?
i : 0;
return myVal || 0;
};
//format integer as currency
var formatSum = function (myVal) {
return accounting.formatMoney(myVal, {
symbol: "$",
precision: 2,
thousand: ",",
decimal: ".",
format: {
pos: "%s %v",
neg: "%s (%v)",
zero: "%s 0.00"
}
});
};
//add total row and determine index
table.row.add(['GRAND TOTAL']).draw();
var total_row = (table.row().count() + 1);
var total_col = (table.row(total_row).column().count + 1);
//alert
console.log('total row: ' + total_row);
//loop columns
table.columns('.sum').every(function () {
sum = this
.data()
.reduce(function (a, b) {
console.log('adding ' + intVal(a) + ' and ' + intVal(b));
return intVal(a) + intVal(b);
});
//alert
console.log('sum: ' + sum);
console.log('column row 2 val: ' + this.data().row([2]));
$(this.cell.node( total_row )).html(
formatSum(sum)
);
});
});
如何在数据行中呈现对象数据?
我还收到以下错误消息,我不确定缺少哪个参数(第 2 列和第 3 列为空):
我已经包含了控制台数据的屏幕截图,如果您需要,我可以提供 .aspx 标记:
我仍在学习这些东西的来龙去脉。非常感谢您提供的任何指导。
提前致谢!
【问题讨论】:
标签: javascript jquery asp.net gridview datatables