前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编程小记 -- ASP.NET的GridView使用教程

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

作者头像
浩Coding
发布2019-07-03 11:05:17
2K0
发布2019-07-03 11:05:17
举报
文章被收录于专栏:浩Coding浩Coding

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

最近有个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 :母版页中的顶部菜单栏加上年度排行榜的链接:

查看项目源代码后发现userControl\menu.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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩Coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档