从零开始编写自己的C#框架(22)——添加普通列表页面

  1. 云栖社区>
  2. 博客>
  3. 正文

从零开始编写自己的C#框架(22)——添加普通列表页面

技术小胖子 2017-11-08 09:41:00 浏览671
展开阅读全文

普通列表页面指的是上一章那种有层次感列表以外的正常列表页面,由于上一章已讲解了正常添加页面的相关操作了,所以部分相关的操作本章节就不再罗嗦重复一次了。大家可以试试先用本章内容中的一些简单介绍,自己使用上一章下载的解决方案来实现一下,做做练习。

 

  首先还是打开数据字典,创建广告内容表

  在这里要说明一下的是,大家在对数据字典进行操作后(增、改、删),一定要在数据字典中的“版本”工作表中添加更新历史,以方便后面的维护人员查看(一定要养成一种良好的开发习惯),如下图

 

  然后还是使用ExcelToSQLString2.91_sql.exe工具生成SQL语句,并在数据库中创建数据表,下面是生成好的SQL语句,请在数据库查询分析表中执行

 View Code

 

  跟着打开VS,找到数据层与逻辑层的SubSonic文件夹,选择模板并点击右键,找到“运行自定义工具”,点击重新运行生成相关的模板类

 

  打开Informations文件夹,将InformationList.aspx与InformationEdit.aspx复制到Advertisements(上一章广告文件夹命名错了,我将AdvertisingPositions重新修改为Advertisements)文件夹中

  将它们修改名称为AdvertisementList.aspx与AdvertisementEdit.aspx

  然后将页面中的“Information”替换成“Advertisement”,“信息”替换为“广告”。

 

   下面是改好的AdvertisementList.aspx页面代码

 View Code

 

 

  我们可以看到,AdvertisementList.aspx页面代码主要分为三个部分

 

  <toolbars>标签中存放的是页面顶部按钮

  

  放在这里时,<f:Toolbar ID="toolBar" runat="server">这个标签的Id一定要命名为toolBar,不然程序就不会对这些按钮权限自动进行判断了

  这是一个按钮标签:<f:Button ID="ButtonExportReport" runat="server" Text="导出报表" Icon="Add" OnClick="ButtonExportReport_Click"></f:Button>

  在进行权限绑定时,程序绑定的是ButtonExportReport这个字符串,当我们添加的新按钮名称页面控件权限管理那里不存在,则需要开发人员手动进行添加,添加的中文名称用于显示,而英文名称则用于绑定按钮ID。

  

  比如将上面“导出报表”添加到工具栏中,显示的效果如下图(当前管理员帐号未赋“导出报表”按钮权限,所以为禁用状态,不能点击):

  当然cs代码中要添加

复制代码
1         /// <summary>
2         /// 报表导出按钮点击事件
3         /// </summary>
4         /// <param name="sender"></param>
5         /// <param name="e"></param>
6         protected void ButtonExportReport_Click(object sender, EventArgs e)
7         {
8             
9         }
复制代码

  

  

  页面中<f:Form>标签内存放的是列表条件查询控件

  

  这里大家根据需要进行添加即可

 

  而<f:Grid>标签中存放的则是数据库中查询出来的列表内容了

  

  在这里讲解一下常用的Grid标签属性

属性名称 说明
ID 控件Id,默认为Grid1
Title 列表标题
ShowHeader 是否显示标题
ShowBorder 是否显示表格外边框
EnableFrame 表格外边框是否加粗
AllowSorting 是否允许排序
IsDatabasePaging 是否使用数据库分页(否的话不分页查询出来)
PageSize 每页显示记录数量
AllowPaging 是否允许分页
EnableCheckBoxSelect 每行记录前是否显示选择框
DataKeyNames 主键字段名称,这里可以设置多个字段,提交后会将这些字段的所有值都传到程序中,提供给程序调用
EnableColumnLines 为每一列绘制线条
OnPageIndexChange 列表翻页点击事件
OnPreRowDataBound 列表加载绑定事件
OnRowCommand 列表记录点击事件
OnSort 列表排序点击事件(点击列表顶部名称时进行排序)

  列表内,最常见的行标签就是<f:BoundField DataField="Id" SortField="Id" HeaderText="Id列" Width="50px" />

   DataField是用来绑定数据表字段的,将字段内容显示出来;SortField绑定排序字段;HeaderText是列表顶部显示的标题;Width是列宽。这几个是最常见的属性。如果用你的字段为关键字时,可以这样处理<f:BoundField DataField="[key]" SortField="[key]" HeaderText="Id列" Width="50px" />,为字段加上中括号。

 

   另外还有两个隐藏标签

  <f:Label runat="server" ID="lblSpendingTime" Text=""></f:Label>
      <f:HiddenField runat="server" ID="SortColumn" Text="Id"></f:HiddenField>

   前者用来显示列表数据查询时所使用的时间

  

  后者是用在多个分页时,点击编辑修改某条记录后,关闭窗口会刷新列表页面,而这时如果没有这个隐藏控件保存排序字段的话,那么刷新列表后所显示的内容排序可能就会同编辑之前的内容排序不一样,而导致相关管理人员在手动编辑大量数据时需要花费多余时间查找未编辑的记录,而不能顺着列表记录逐个进行。

 

 

  下面是改好的AdvertisementList.aspx.cs页面代码

 View Code

 

   在cs页面代码的加载数据函数中,绑定Grid表格用的是bll.BindGrid(Grid1, Grid1.PageIndex + 1, Grid1.PageSize, InquiryCondition(), sortList)这个函数。我们在模板中生成的绑定表格函数共有两种类型,一种是有层次感列表绑定,一种是普通列表绑定。当前这种普通列表绑定,需要传递表格控件名称、当前页码、每页显示记录数量、查询条件和排序这几个参数,而对于查询条件如果添加使用,前面章节已有比较详细的说明,大家也可以参考一下上面的cs代码来使用。

  刚刚发现InformationList.aspx.cs页面忘了加查询条件了,就做为作业,大家自己尝试去添加一下吧。

 

  在列表属性绑定时,由于广告表有排序字段,但没有父Id存在,即它不是多级别分类记录,所以在实现自动排序时,使用父类默认的自动排序函数是不行的,我们需要重写该函数,具体如下:UpdateAutoSort()函数有很多参数,但大部分都有默认值,按照默认值,我们只需要传当前页面针指进去就可以了,具体实现大家请自己查看该函数。

复制代码
 1         #region 保存自动排序
 2         /// <summary>
 3         /// 保存自动排序
 4         /// </summary>
 5         public override void SaveAutoSort()
 6         {
 7             if (bll.UpdateAutoSort(this))
 8             {
 9                 Alert.ShowInParent("保存成功", "保存自动排序成功", "window.location.reload();");
10             }
11             else
12             {
13                 Alert.ShowInParent("保存失败", "保存自动排序失败");
14             }
15         }
16         #endregion
复制代码

 

  由于广告管理会上传广告图片,所以执行删除时需要先将运行图片删除函数(AdvertisementBll.GetInstence().DelAdImg(this, i)),再删除广告记录。

 

  其他的cs页面代码同上一章差不多,所以不再详细说明。

 

 

  我们本章已添加了广告页面,所以上一章注释的删除判断与更新广告位置名称时,同步更新广告表对应名称的功能要启用。

  AdvertisingPositionList.aspx.cs页面

  

 

  删除前判断当前广告位置记录是否已给广告记录使用了,是的话必须删除相关广告后才能删除广告位置记录。

 

 

  AdvertisingPositionEdit.aspx.cs页面 

  广告位置记录编辑时,如果广告位置名称有修改,这里就会同步执行修改广告表里对应的广告位置名称。这里所调用的函数也是模板生成好的函数。

 

   

   AdvertisementEdit.aspx页面代码

 View Code

   AdvertisementEdit.aspx页面主要分为两个部分,一个是工具栏,同列表页面差不多;另一个是内容编辑控件,具体怎么排版大家自己根据需要来设置,大家看看标签属性的英文就知道是什么功能了,当然也可以进入FineUI官网查看在线示例,里面有很多排版介绍与调用的源代码例子。

 

 

   AdvertisementEdit.aspx.cs页面代码

 View Code

  cs页面代码与上一章的差不多,同时也加了很详细的注释,所以也不再详细描述,大家自己尝试修改后与上面代码比较一下。

 

 

  下面再附上相关SQL更新代码,直接在数据库查询分析器中执行就可以了

 View Code

 

  本次代码还更新了DotNet.Utilities.ConfigHelper类、DotNet.Utilities.GridViewHelper类

  前者修改配置文件读取转换出错的问题,后者修改了获取Grid表格选择行数据的相关函数,以及修改后所引起的UI层相关页面函数的引用。

 

  还有自定义OnlineUsersBll.cs类也修改了个小Bug

 

   除了上面添加了上面代码外,还新增三个日志删除的存储过程

  

  大家如果将项目放在正式环境上时,可以在SQL Server代理中创建作业来运行,设置每个月自动执行一次就可以了

  

  

  

  

  

  

  

 


    本文转自 AllEmpty 博客园博客,原文链接:http://www.cnblogs.com/EmptyFS/p/3834121.html,如需转载请自行联系原作者





网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注