在asp.net Listview中添加自动计算求和行和列

时间:2012-09-26 09:30:28

标签: javascript asp.net listview textbox devexpress

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

1 个答案:

答案 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());
}