我正在尝试创建包含 ASPxTextBox 的 ListView,用户只能输入数字值。有许多行和列的数据。我想添加新的行和列来计算每行和列的总值
例如,如果我有这样的数据:
学生姓名|主题1 |主题2 |主题3
-------------------------------------------------- --------
约翰 ---------- | ------- 23 | --------45 | --------37
史密斯 ---------- | ------- 41 | --------22 | --------11
琳达 ---------- | ------- 35 | --------38 | --------23
我也想成为这样的人
学生姓名|主题1 |主题2 |主题3 |总计
-------------------------------------------------- ----------------
约翰 ---------- | ------- 23 | --------45 | --------37 | 105
史密斯 ---------- | ------- 41 | --------22 | --------11 | --74
琳达 ---------- | ------- 35 | --------38 | --------23 | --96
-------------------------------------------------- ----------------
总计---------- | --------99 | --------105| --------71 | 275
列数(主题)是固定的,但行数取决于数据库中的数据。
这里有两个主要问题:
1.我希望求和行和列使用javascript在客户端执行计算。因此,当其中一个文本框失去焦点时,它将重新计算每一行和每一列的求和值。
2. 我无法使用 javascript 访问 ASPxTextBox 中的值。我尝试使用:
var test = document.getElementById('<%# Container.FindControl("txt_Subject1").ClientID %>')
var data = test.value;
但似乎不起作用。
以下代码也会导致错误:
var test = document.getElementById('<%# Container.FindControl("txt_Subject1").ClientID %>')
var data = test.GetValue();
当我尝试 ClientInstanceName 时,它总是仅返回最后一行的值:
var data = txt_Subject1.GetValue(); //doesn't work?
另外,我不想将 ASPxTextBox 更改为 asp TextBox,因为我想使用它的一些功能。
最佳答案
您可以根据行号动态分配 ClientInstanceName 值:
txt_Subject1_1
txt_Subject1_2
...
txt_Subject1_n
然后使用javascript计算总和:
var sum = 0;
for (var i = 1; i <= rowCount; i++)
{
sum += parseInt(window['txt_Subject1_' + i].GetValue());
}
关于javascript - 在asp.net Listview中添加自动计算求和行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598635/