编程小记 -- ASP.NET的GridView使用教程

2019-07-03 11:05:17 浏览数 (1)

最近打算新开个专栏,用于总结平时编程的小技巧,以飨读者。

最近有个ASP.NET的小Demo,用到一些ASP.NET的知识,本篇讲的是ASP.NET的GridView使用,GridView的使用还是非常方便的,包括数据的动态绑定,表格的编辑都非常简单,不用再为HTML的Table格式发愁了哈哈哈。本篇教程说是GridView的教程,其实是整个功能实现的总结,包括我编程时的思路、实现功能的小技巧等等。

本次项目是一个购物网站,要在上面加一个功能,需要做一个商品年销量排行榜,以下是我的整体思路,供大家品鉴:

因为是项目增加功能,所以至少先弄懂数据库中各个表的含义:

还有数据库主表的关系图,其他例如用户表,权限表等,这个功能不需要涉及这些,暂时不加以讨论:

一 准备工作

1 :模拟2012-2018年订单数据:先从tb_Detail订单详细表中找出属于2012年的数据(备注有,故意模拟的),查出OrderID:

select OrderID from tb_Detail where Remark = "2012年数据用";

2 :再通过OrderID修改tb_OrderInfo商品订单表中的各个年度:

update tb_OrderInfo set OrderDate="2012-05-31 11:27:37.123" where OrderID in (select OrderID from tb_Detail where Remark = "2012年数据用");

3 :查看了下整个2012年数据没问题(select OrderID from tb_OrderInfo where YEAR(OrderDate) =2012;)可以考虑使用for循环了:

declare @min int

declare @max int

set @min=2013

set @max=2019

while @min<@max

begin

update tb_OrderInfo set OrderDate=cast(@min as varchar(10)) "-05-31 11:27:37.123" where OrderID in (select OrderID from tb_Detail where Remark = cast(@min as varchar(10)) "年数据用")

set @min=@min 1

end

注意for循环中的cast(@min as varchar(10))字段,这是因为我们声明的@min变量是int类型的,而后面的“年数据用”和我们要查询的Remark字段都是vachar类型的,所以需要把int类型转为varchar,不然会出现如下错误:int类型转换错误!

4:最后测试数据,通过,噢耶(^o^)/!!

二 剖析数据库过程

看了上面的数据库关系图,再看看各个表的详细定义,这个时候就需要考虑这个年度排行榜需要从哪些表提取哪些数据了,过程如下:

1:先从tb_OrderInfo商品订单表中查出某年度的订单,获取OrderID :

select OrderID from tb_OrderInfo where YEAR(OrderDate) =2012;

其中有关这个SqlServer的时间查询,我专门写了一篇文章,大家有兴趣可以看看:SQL Server 的时间函数

2:再通过OrderID(仅计算某年度的销量)映射到tb_Detail订单详细表,找到订单对应的书籍BookID,并为每本书统计销量(用group by对订单号分组,可以查询出某本书的销量,默认降序):

select BookID,sum(Num) as SalesVolume from tb_detail where OrderID in (select OrderID from tb_OrderInfo where YEAR(OrderDate) =2018) group by BookID order by sum(Num) desc;

3:再通过BookID映射到tb_BookInfo书籍详细信息表,找到BookID对应的书名BookName:

select BookName as 书名 from tb_BookInfo where BookID = 17;

三 界面设计

1 :母版页中的顶部菜单栏加上年度排行榜的链接:

查看项目源代码后发现userControlmenu.ascx是母版页菜单栏的实现,在其中加上我们所做的排行榜页面(billborad.aspx)链接,直接用的HyperLink控件:

最后效果图如下,请忽略这个上世纪的UI风格:

2 :编辑排行榜页面(billborad.aspx):

具体来说就是一个供用户选择年度的下拉列表DropDownList,有个下拉列表值改变事件,会触发页面数据的刷新:

还有一个表格GridView,用于显示排行榜数据(PS:vs全屏撸代码快捷键:使用组合键“ SHIFT ALT ENTER ”。):

四 排行榜功能逻辑实现

直接在billborad.aspx.cs里面写逻辑代码,这个没什么可讲的,只要是GridView的使用:

1 :设置GridView的数据源 -- DataTable

2 :为DataTable添加列,共4列,即表头,对应前端页面

3 ://为dtTable中添加行

4 :为数据源dtTable每一行赋值 排名、ID、销量,即用DataRow作为数据源实际的一行行数据:

5 :数据源绑定GridView:

6 :下拉列表值改变事件:

注意这个bind方法不要加上IsPostBack,因为这不是刷新页面。

最后运行截图如下:

用户改变了年份,数据会刷新:

参考文章:

微软官方文档,翻译的还不错:

https://code.msdn.microsoft.com/CSASPNETGridView-5b16ce70

0 人点赞