自己开发的一个生成多级select的自定义标签
自己开发的一个生成多级select的自定义标签
功能描述:
1、通过设置level属性来限制select的级数,默认是按编码来进行显示级数,如果设置level属性,则设置优先。
2、通过设置defaultValue属性来设置select的第一个选项"请选择"的value值。
3、通过设置lastSelectValue属性来设置将要默认选中的选项,你只需要指定最后级select选项默认应该选中的值,它就可以计算出前几级应该显示默认显示哪个选项。
4、你可以将这个自定义标签用于列表中显示,使用时只需设置pageSize来指定每页显示的行数,就可以了。
5、通过设置disabled属性来设置这个多级select是否disabled,当disabled属性等于'disabled'时这个多级选项不可用。
6、通过设置styleClass属性来设置css的class。
7、通过设置style属性来设置style。
组成部分:
MultSelectTag.tld //标签描述文件
MultSelectJS.js //控制各级select
MultSelectBean.java //select选项对象
MultSelectTag.java //自定义标签
实现描述:
在数据库表中存储各级select选项信息(提供的demo中将这些数据直接写在了jsp上已供参考运行),本系统没有使用父子关系字段进行标识,而是给每一个select选项做了一个编码,前台页面的javascript通过这个编码就能够识别它们之间的主次级关系,再向用户展示。这样一来在用户需求变更时,我们只需要在数据表中对这些选项信息进行修改,如果修改选项级数也只用修改一下选项的编码就可以了。
编码说明:
例如:001_001_000_000
第一位001表示:模块编码;
第二位001表示:一级菜单编码;
第三位000表示:二级菜单编码;
第四位000表示:三级菜单的编码;
其中000是用来补缺的,比如:001_001_000_000它有一级菜单编号但没有二级菜单和三级菜单编号,那么他就是一级菜单在这个编码中编码主要有4个部分组成,它表示这个编码用于一个三级select,如果是3个部分组成就表示这个编码用于一个二级select;当然你可以写成5个、6个...
表数据示例:
id 名称 编码 描述
1 '一级菜单1' '001_001_000'
2 '二级菜单1' '001_001_001'
3 '二级菜单2' '001_001_002'
4 '一级菜单1' '001_002_000'
5 '二级菜单1' '001_002_001'
6 '二级菜单2' '001_002_002'
7 '二级菜单3' '001_002_003'
备注:
1、本组件在ecside框架的列表中进行过调试,在翻页的时候不能正确初始化select,原因是在翻页时新成生的html代码是直接赋值给原来老的table部分,不能执行初始化函数,所以需要调一下select的初始化函数。具体做法如下:
在ecside.js中找到Me.fillForm=function(originalRequest)函数,在Me.init();之后调用一下select的初始化函数initFirstOption();就ok了。
2、在数据表中可以再加一列,用于标记该行记录是否可用。
附件中是开发的源代码!在此抛块“砖”希望能引来“玉”,请大家多提宝贵意见!