页面权限与页面控件权限经过简单的调试后,终于启用起来了,以后大家添加新页面时,就必须按照本章介绍的方法,将你新增的页面注册到系统中,这样才能访问与进行相关操作。
下面讲讲如何创建一个分类类型的页面。
分类类型,顾名思义指的是按照一定规律、特点进行归类划分,放到一块的集合。我们开发时这些分类类型,经常用下拉列表来表现,如果有多级分类时,采用的是下拉树列表方式显示。
普通下拉列表
下拉树列表
下面将介绍如何从创建数据表、修改文件到权限绑定逐个步骤进行说明。
首先,我们先要创建好数据表
我们打开数据字典,按数据字典中的格式,创建一个广告位置管理表
然后打开大神July提供的SQL语句生成工具,生成数据表创建语句
运行ExcelToSQLString2.91_sql.exe,选择《数据字典》的文件路径,设置想要生成SQL语句的表格名称,然后点击运行
生成下面语句
将生成的语句放到SQL的查询分析器中执行,生成数据表(见下图已生成的数据表)
打开解决方案,找到数据层的SubSonic文件夹,按下图进行选择后,点击右键,找到“运行自定义工具”,点击重新运行生成数据层模板类
找到逻辑层的SubSonic文件夹,按下图进行选择后,点击右键,找到“运行自定义工具”,点击重新运行生成逻辑层模板类
通过以上操作,已经帮我们生成了底层我们需要调用到的常用实体和函数了,下面接着创建相关文件
为了方便管理,我们在UI层后端管理文件夹(WebManage)中创建一个AdvertisingPositions文件夹,用于存放广告管理的相关文件
已创建好文件夹
打开Informations文件夹,将InformationClassList.aspx复制到AdvertisingPositions文件夹中(因为这两个文件的功能比较相似,所以直接复制过来修改)
将InformationClassList.aspx改名为AdvertisingPositionList.aspx
打开AdvertisingPositionList.aspx与AdvertisingPositionList.aspx.cs文件,按下面方式进行替换
将页面中的“InformationClass”替换成“AdvertisingPosition”
将页面中的“信息分类”替换为“广告位置”
找到AdvertisingPositionList.aspx.cs文件的命名空间,将Informations替换成AdvertisingPositions,如下图
同样找到AdvertisingPositionList.aspx文件也进行同面的替换
经过替换,页面大体的功能就完成了。
打开AdvertisingPositionList.aspx文件,将Grid中想要显示的列重新进行设置绑定(按下面内容进行修改,具体怎么使用FineUI,大家可以登陆FineUI官网查看在线示例,或者先按我代码中的内容尝试对控件属性进行增改操作后刷新页面,查看修改后的效果,弄上几个就很容易明白怎么使用了)
1 <f:Grid ID="Grid1" Title="广告位置列表" EnableFrame="false" EnableCollapse="true" AllowSorting="true"
2 PageSize="15" ShowBorder="true" ShowHeader="False" AllowPaging="true" runat="server" EnableCheckBoxSelect="True" DataKeyNames="Id" EnableColumnLines="true"
3 OnPageIndexChange="Grid1_PageIndexChange" OnPreRowDataBound="Grid1_PreRowDataBound" OnRowCommand="Grid1_RowCommand">
4 <Columns>
5 <f:BoundField DataField="Id" HeaderText="位置ID" Width="50px" />
6 <f:TemplateField HeaderText="位置图" Width="60px">
7 <ItemTemplate>
8 <%# Eval("MapImg").ToString().Length > 5 ? "<a href='" + Eval("MapImg").ToString() + "' target="_blank" class='PicToolTip'><img src='" + DirFileHelper.GetFilePathPostfix(Eval("MapImg")+ "", "s") + "'></a>" : ""%>
9 </ItemTemplate>
10 </f:TemplateField>
11 <f:BoundField Width="150px" DataField="Name" DataFormatString="{0}" DataSimulateTreeLevelField="Depth" HeaderText="名称" />
12 <f:BoundField DataField="Keyword" HeaderText="关键字" Width="100px" />
13 <f:BoundField DataField="Width" HeaderText="宽" />
14 <f:BoundField DataField="Height" HeaderText="高" />
15 <f:TemplateField HeaderText="排序" Width="100px">
16 <ItemTemplate>
17 <asp:TextBox ID="tbSort" runat="server" Width="50px" Text='<%# Eval("Sort") %>' AutoPostBack="false"></asp:TextBox>
18 </ItemTemplate>
19 </f:TemplateField>
20 <f:LinkButtonField HeaderText="是否显示" Icon="BulletCross" TextAlign="Center" ToolTip="点击修改是否显示" ColumnID="IsDisplay" CommandName="IsDisplay" />
21 <f:BoundField DataField="Depth" HeaderText="级别层次" TextAlign="Center" />
22 <f:LinkButtonField HeaderText="操作" TextAlign="Center" ToolTip="点击修改当前记录" ColumnID="ButtonEdit" CommandName="ButtonEdit" />
23 </Columns>
24 </f:Grid>
打开AdvertisingPositionList.aspx.cs文件,我们会看到一些调用函数不存在或是提示出错,那么我们就动手创建或修改一下就可以了
由于绑定下拉列表函数我们的模板没有生成,所以就手动创建一下
同理,我们按InformationClassBll逻辑类的内容,创建AdvertisingPositionBll逻辑类
1 using System;
2 using System.Collections.Generic;
3 using System.Web.UI;
4 using DotNet.Utilities;
5 using Solution.DataAccess.DataModel;
6
7 /***********************************************************************
8 * 作 者:AllEmpty(陈焕)-- 1654937@qq.com
9 * 博 客:http://www.cnblogs.com/EmptyFS/
10 * 技 术 群:327360708
11 *
12 * 创建日期:2014-07-07
13 * 文件名称:AdvertisingPositionBll.cs
14 * 描 述:广告位置管理逻辑类
15 *
16 * 修 改 人:
17 * 修改日期:
18 * 修改原因:
19 ***********************************************************************/
20 namespace Solution.Logic.Managers
21 {
22 /// <summary>
23 /// AdvertisingPositionBll逻辑类
24 /// </summary>
25 public partial class AdvertisingPositionBll : LogicBase
26 {
27 /***********************************************************************
28 * 自定义函数 *
29 ***********************************************************************/
30
31 #region 自定义函数
32
33 #region 绑定广告位置下拉列表
34 /// <summary>
35 /// 绑定广告位置下拉列表——只显示一级广告位置
36 /// </summary>
37 public void BandDropDownList(Page page, FineUI.DropDownList ddl)
38 {
39 var dt = DataTableHelper.GetFilterData(GetDataTable(), AdvertisingPositionTable.ParentId, "0", AdvertisingPositionTable.Sort, "desc");
40
41 //显示值
42 ddl.DataTextField = AdvertisingPositionTable.Name;
43 //绑定Id
44 ddl.DataValueField = AdvertisingPositionTable.Id;
45
46 //绑定数据源
47 ddl.DataSource = dt;
48 ddl.DataBind();
49 ddl.Items.Insert(0, new FineUI.ListItem("请选择广告位置", "0"));
50 ddl.SelectedValue = "0";
51 }
52
53 /// <summary>
54 /// 绑定广告位置下拉列表——显示所有
55 /// </summary>
56 public void BandDropDownListShowAll(Page page, FineUI.DropDownList ddl)
57 {
58 //设置排序
59 var sortList = new List<string>();
60 sortList.Add(AdvertisingPositionTable.Depth);
61 sortList.Add(AdvertisingPositionTable.Sort);
62
63 //筛选记录
64 var dt = GetDataTable(false, 0, null, 0, 0, null, sortList);
65
66 try
67 {
68 //整理出有层次感的数据
69 dt = DataTableHelper.DataTableTidyUp(dt, AdvertisingPositionTable.Id, AdvertisingPositionTable.ParentId, 0);
70
71 ddl.EnableSimulateTree = true;
72
73 //显示值
74 ddl.DataTextField = AdvertisingPositionTable.Name;
75 //绑定Id
76 ddl.DataValueField = AdvertisingPositionTable.Id;
77 //数据层次
78 ddl.DataSimulateTreeLevelField = AdvertisingPositionTable.Depth;
79 //绑定数据源
80 ddl.DataSource = dt;
81 ddl.DataBind();
82 ddl.SelectedIndex = 0;
83
84 ddl.Items.Insert(0, new FineUI.ListItem("请选择广告位置", "0"));
85 ddl.SelectedValue = "0";
86 }
87 catch (Exception e)
88 {