1

我正在尝试创建包含用户只能输入数值的 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,因为我想使用它的一些功能。

4

1 回答 1

0

您可以根据行号动态分配 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());
}
于 2012-09-26T10:36:56.893 回答