ASP.NET ListView - 列的总值(总和)

时间:2012-03-20 09:57:29

标签: asp.net listview user-controls

我正在编写一个可重用的控件 - 让我们称之为MyListView - 继承自标准的ASP.NET ListView控件。它的数据源始终设置为LinqDataSource,我需要计算特定列的总值(该列的所有值的总和)。哪种方式最好计算总价值?我在考虑OnItemDataBound事件并使用全局变量计算总数,但我还需要在MyListView中进行分页(使用标准的Pager控件),此事件仅针对当前可见页面上的行而不是针对数据源中的所有行触发。我也不想计算ASPX页面背后代码的总和,我只想在aspx中指定一个列名,MyListView将自动计算该列的总值。

谢谢你的帮助!

4 个答案:

答案 0 :(得分:1)

如果您使用分页,那么获得该结果并不容易。我认为您应该考虑将用于总计的行放在 ListView之外(因此您也可以使用LINQ来计算总计,我猜您不想枚举所有项目来计算总计)可以在SQL端快速完成。)

答案 1 :(得分:1)

Dim total As Integer
For Each Items As ListViewItem In lV_allItems.Items
    Dim lbl As Label = CType(Items.FindControl("Quantitytxtbox"), Label)
    total += lbl.Text
Next
Label1.Text = "TOTAL FRAME ADDED : " + total.ToString

我将此代码放在页面预呈现中并且它工作正常,您必须确保列中的内容是整数,否则您需要转换。

答案 2 :(得分:0)

如果你想从数据库中获取总值,我的suggession是将一个输出参数与query / linkq一起传递给数据库,并从获取数据的同一调用中获取数据库中所有记录的总和。

答案 3 :(得分:0)

假设您使用此查询绑定listview

var queryforBind= (from c in table).Skip(1).Take(10); //1 and 10 can be changed according to your requirement

并在绑定列表视图后调用此查询以计算总计。

var sum = queryforBind.Sum(x => x => x.Field); //Field can be according your requirement
相关问题