后台管理的第一个页面,实现了一个多级菜单的下拉列表控件

今天下午算是写了第一个自定义控件。

因为部门表存在无限级的可能。因此如何在页面中较好的呈现就出现了很大的问题。

下面是部门表

---部门,可以无限级别嵌套--

Create Table Departments

(

    DepartmentId int identity primary key,

    DepartmentName nvarchar(50) not null,

    DepartmentNumber nvarchar(50) not null default '',

    UpDepartmentId int not null default 0,

    DepartmentDepth    int not null default 1    ,

    --0-超管 1-院系,2-行政,3-实训中心.

    DepartmentType tinyint not null default 1,

        --激活状态, 0-false ,1-yes

    Status tinyint default 1,

    

    --权限字符串,值为SPMRight表中的id用,隔开

    RightValue nvarchar(max)

)

 

我希望在一页能够尽可能多的显示有效信息。因此如下设计界面

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第1张图片

上面的添加部门是用的FormView,下面的部门列表是GridView

GridView的数据源来自ObjectDataSource,其方法为GetAll(),没有经过投影.

(或许我应该为这里单独写一个BLL的方法,否则太增加表现层负担)

 

  • 部门列表

由于上级部门的字段是int型的。可是页面中显然应该显示的是部门名称。于是考虑上级部门改成TemplateField,代码隐藏页中编写RowDataBound事件的处理方法


					
					

同样的办法处理部门状态列和操作列, aspx页面代码如下

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第2张图片

(晕死,word写的Blog,实在不好弄代码)

代码页的代码如下

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第3张图片

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第4张图片

这里的73行以后都是为了实现操作列中的命令。

78行:寻找自定义控件

79行:给该控件的Type赋值,99表示选择所有的部门。

80,行:赋值,在赋值中,实现了下拉列表中对应项被Seleted的效果

79和80行的语句顺序不能颠倒。

  • 增加部门

 

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第5张图片

这个实际上是用的Ajax。上级部门默认的死一级部门。

我希望在列表中,如果点击添加子部门的话,这里的上级部门会自动变成对应的部门。

这个逻辑在73行到84行实现。那个DepartmentDropDownList是自定义控件。

这里的添加部门使用的是FormView,本来想不用FormView,但是由于在UpdatePanel中,Button的Click事件被消除了。

所以只好用FormView的ItemInserting事件。

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第6张图片

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第7张图片

代码隐藏页代码:

后台管理的第一个页面,实现了一个多级菜单的下拉列表控件_第8张图片

 

  • 自定义控件代码(续)

转载于:https://www.cnblogs.com/willstier/archive/2013/06/05/3118194.html

你可能感兴趣的:(后台管理的第一个页面,实现了一个多级菜单的下拉列表控件)