创建显示摘要销售数据的GridView的最佳方法是什么?

时间:2012-09-19 19:05:33

标签: c# asp.net sql gridview

我用C#和ASP.Net开发了一个电子商务应用程序。对于管理员用户“仪表板”登录页面,我想给他们一个GridView,向他们显示几个不同时间范围的总销售额金额,这些将是我的列(即最后一天,上周,上个月,最后一个年,总数)。我想为处于不同状态的订单提供这些值(即完整,付费但未发货,正在进行中)。类似的东西:

|OrderStatus|Today|LastWeek|LastMonth|
|Processed  |$10  |$100    |$34000   |
|PaidNotShip|$4   |$12     |$45      |

我的问题:最好/最有效的方法是什么?我知道我可以编写单独的SQL语句并将它们组合在一起并将gridview绑定到sqldatasource:

(select amountForYesterday, amountForLastWeek from sales where orderStatus = processed)
UNION 
(select amountForYesterday, amountForLastWeek from sales where orderStatus = paidnotshipped) 

但这似乎是一种痛苦而且非常低效,因为我实际上会为每个值编写一个单独的查询。

我也可以在加载后面的.cs页面中执行此操作,并以编程方式逐行填充网格视图。

此GridView仅显示用户特定组织的信息,因此也必须根据该信息进行过滤。

我不知道如何在不编写大量查询的情况下执行此操作,并且每次查看页面时都会不断地访问该查询和数据库。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我更喜欢使用LINQ来处理数据和/或GridView(访问行等)。看看我在GitHub上的一个项目,这正是我在这里提到的,例如。请注意,这只是我之前用于说明目的的沙箱。

GitHub Repo

https://github.com/pauloosthuysen/int

其他有用信息:

http://www.codeproject.com/Articles/33685/Simple-GridView-Binding-using-LINQ-to-SQL

答案 1 :(得分:0)

LastWeek和LastMonth的销售等不会经常变化。您可以将其存储在由组织索引的静态字典中,或者将其汇总到单独的表中以便更快地访问。这样您就不需要选择相同的大量行来反复获取相同的数字。除非有特殊要求,否则我会坚持使用Dictionary解决方案,因为它很简单,但组合也可以是一个很好的解决方案

答案 2 :(得分:0)

没有直接的方法。 但是,您可以使用用于绑定到网格的数据表来执行这些操作,而不是将数据库命中到每列的总和。

您需要做的就是使用

Dim iSumSal As Integer

iSumSal = StudentTable.Compute(“SUM(sal)”,“”)

同样可以执行其他列。

一旦完成。然后只需在数据表中添加一个新行,其中包含所有求和值。

然后你可以将它绑定到你的网格。

可选 - 您可以将新行的第一列中的某些文本值设置为“Total:”

感谢

的Rahul