我正在尝试创建包含ASPxTextBox的ListView,用户只能输入数值。有许多行和列的数据。我想添加新行和列来计算每行和每列的总值
例如,如果我有这样的数据:
学生姓名| Subject1 | Subject2 |主题3
-------------------------------------------------- --------
约翰----------- ------- 23 | -------- 45 | -------- 37
史密斯---------- | ------- 41 | -------- 22 | -------- 11
琳达---------- | ------- 35 | -------- 38 | -------- 23
我想要像这样
学生姓名| Subject1 | Subject2 | Subject3 |总
-------------------------------------------------- ----------------
约翰----------- ------- 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,因为我想使用它的一些功能。
答案 0 :(得分: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());
}