0

我在 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 将仅显示用户特定组织的信息,因此它也必须根据该信息进行过滤。

对于如何在不编写大量查询并在每次查看页面时不断点击该查询和数据库的情况下如何做到这一点,我有点不知所措。

有任何想法吗?

4

3 回答 3

0

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

您需要做的就是使用

Dim iSumSal As Integer

iSumSal = StudentTable.Compute("SUM(sal)", "")

同样,您可以对其他列执行。

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

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

可选 - 您可以在新行的第一列中放置一些文本值作为“总计:”

谢谢

拉胡尔

于 2012-09-25T11:40:46.300 回答
0

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

GitHub 回购

https://github.com/pauloosthuysen/int

其他有用信息:

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

于 2012-09-19T19:14:35.670 回答
0

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

于 2012-09-19T19:15:09.447 回答