今天我来给大家分享一下,动态生成选项卡的案例
效果图
分享这个知识之前,我们先来了解一下什么是无限极分类?
无限级分类是一种分类技巧,例如部门组织,文章分类,学科分类等常用到无限级分类,将其简单理解成分类就好了。
引入公共资源:
- <%@include file="common/Layui.jsp" %>
- <%request.setAttribute("jdlj", request.getContextPath()); %>
首先是左导航区域的HTML
-
- <ul class="layui-nav layui-nav-tree" id="menu" lay-filter="test">
- <li class="layui-nav-item layui-nav-itemed">
- <a class="" href="javascript:;">所有商品a>
- <dl class="layui-nav-child">
- <dd><a href="javascript:;">列表一a>dd>
- <dd><a href="javascript:;">列表二a>dd>
- <dd><a href="javascript:;">列表三a>dd>
- <dd><a href="">超链接a>dd>
- dl>
- li>
- <li class="layui-nav-item">
- <a href="javascript:;">解决方案a>
- <dl class="layui-nav-child">
- <dd><a href="javascript:;">列表一a>dd>
- <dd><a href="javascript:;">列表二a>dd>
- <dd><a href="">超链接a>dd>
- dl>
- li>
- <li class="layui-nav-item"><a href="">云市场a>li>
- <li class="layui-nav-item"><a href="">发布商品a>li>
- ul>
如何实现左导航的呢,当然是通过我们的JavaScript代码实现
-
- let $=null;
- let jdlj=null;
- let element=null;
-
- layui.use(['jquery','element'], function() {
- layer = layui.layer;
- $ = layui.jquery;
- element = layui.element;
- let jdlj="${jdlj}";
-
- $.ajax({
- url: jdlj+"/PermissionAction.action?methodName=query",
- type: "get",
- dataType: 'json',
- success:function(resp) {
- /* console.log(resp); */
- if(resp.code == 0){
- $.each(resp.data,function(index,node){
- /* console.log(node); */
- let dd=index==0?'layui-nav-itemed':'';//如果dd为0,就显示第一行导航
-
- let li=$('
- ' ">
'); -
- let children=node.childer;/* 得到所有子节点 */
- let dl=$('
'); - $.each(children,function(i,n){
- dl.append(dd);
-
- });
- li.append(dl);
-
- $("#menu").append(li);
- });
- element.render("menu");/* 渲染器到页面 */
- }
- }
- });
- });
点击生成选项卡
HTML
- <div class="layui-tab" id="funcTab" lay-filter="demo" lay-allowclose="true">
- <ul class="layui-tab-title">
- <li id='sb' class="layui-this" lay-id="11" >首页li>
- ul>
- <div class="layui-tab-content">
- <div class="layui-tab-item layui-show">首页内容区div>
- div>
- div>
选项卡必须要有属性lay_filter="demo",因为它要给你追加显示到这个位置上
- function openTab(name,id,url){
- let tab =$('li[lay-id='+id+']').length;//获取点击导航条生成选项卡的子id
- if(tab == 0){
- //新增一个Tab项
- element.tabAdd('demo', {
- title: name, /* scrolling="auto" 显示滚动条 */
- content: '',
- id: id //实际使用一般是规定好的id,这里以时间戳模拟下
- })
- }
- //自动调用
- getbody();
-
- //点击选项卡时,自动切换当前选项卡
- element.tabChange('demo',id);
-
- //设置页面内容高度的方法
- function getbody(){
- let height=$(".layui-body").height();
- $(".myiframe").css("height",height-1);//将内容高度设置样式
- }
-
- /* 动态获取窗口高度,让窗体随客户拖动而变化 */
- $(window).resize(function(){
- getbody();
- })
- }
用户管理页面 实现CRUD
DAO层
- @Override
- public List
queryUser(String strchName, PageBean pb) { - String sql = "select id,name,loginName,pwd,rid from t_oa_user ";
-
- List
- if (strchName !=null && !"".equals(strchName)) {
- sql += " where name like ?";
- param.add(strchName + "%");
- }
- return DbTemplate.query(sql, param.toArray(), pb, User.class);//.toArray();集合转为数组
- }
-
-
- @Override
- public List
queryUser2(User u, PageBean pb) { - String sql = "select id,name,loginName,pwd,rid from t_oa_user ";
-
- List
param = new ArrayList(); - if (u !=null && !"".equals(u.getName()) && u.getName() != null ) {
- sql += " where name like ?";
- param.add(u.getName() + "%");
- }
- return DbTemplate.query(sql, param.toArray(), pb, User.class);//.toArray();集合转为数组
- }
-
- @Override
- public void addUser(User u) {
- String sql="insert into t_oa_user(name,loginName,pwd,rid) values(?,?,?,?);";
-
- DbTemplate.update(sql, new Object[] {u.getName(),u.getLoginName(),u.getPwd(),u.getRid()});
-
- }
-
- @Override
- public void updateUser(User user) {
- String sql = "update t_oa_user set name=?, loginName=?, rid=? where id = ? ";
- DbTemplate.update(sql,new Object[] {user.getName(),user.getLoginName(),user.getRid(),user.getId()});
- }
-
- @Override
- public void delUser(Integer id) {
- String sql="delete from t_oa_user where id =?";
- DbTemplate.update(sql, new Object[] {id});
- }
action控制层
- public class UserAction extends AbstractDispatchAction implements ModelDrive{
-
- private User u = new User();
-
- @Override
- public Object getModel() {
- return u;
- }
- public void queryUser(HttpServletRequest req,HttpServletResponse resp) {
- IUserbiz biz=new Userbizimpl();
-
- PageBean pb=new PageBean();
- pb.setRequest(req);
-
- List
list = biz.queryUser2(u, pb); -
- try {
- if(list != null) {
- CommonUtils.toJson(0, "查询成功", list, resp);
- }
- } catch (Exception e) {
- e.printStackTrace();
- CommonUtils.toJson(-1, "查询失败", resp);
- }
- }
-
- public void addUser(HttpServletRequest req,HttpServletResponse resp) {
- IUserbiz biz=new Userbizimpl();
- try {
- MD5 m=new MD5();
- //密码加密
- u.setPwd(m.getMD5ofStr(u.getPwd()));
- biz.addUser(u);
- CommonUtils.toJson(0, "新增成功", resp);
- } catch (Exception e) {
- e.printStackTrace();
- CommonUtils.toJson(-1, "新增失败", resp);
- }
-
- }
-
- public void updateUser(HttpServletRequest req,HttpServletResponse resp) {
- IUserbiz biz=new Userbizimpl();
- try {
- biz.updateUser(u);
- CommonUtils.toJson(0, "修改成功", resp);
- } catch (Exception e) {
- e.printStackTrace();
- CommonUtils.toJson(-1, "修改成功", resp);
- }
-
- }
-
- public void delUser(HttpServletRequest req,HttpServletResponse resp) {
- IUserbiz biz=new Userbizimpl();
- try {
- biz.delUser(2);
- CommonUtils.toJson(0, "删除成功", resp);
- } catch (Exception e) {
- e.printStackTrace();
- CommonUtils.toJson(-1, "删除失败", resp);
- }
-
- }
- }
HTML页面中body的部分代码
-
- <div class="layui-inline">
- <label class="layui-form-label">姓名:label>
- <div class="layui-input-block">
- <input type="text" name="name" id="name" placeholder="名称" class="layui-input">
- div>
- div>
- <div class="layui-inline">
- <button class="layui-btn" id="queryUser"><i class="layui-icon layui-icon-search">i>查询button>
- <button class="layui-btn layui-btn-normal" id="addUser"><i class="layui-icon layui-icon-add-1">i>增加button>
- div>
-
-
- <table class="layui-hide" id="userTable" lay-filter="userTable">table>
-
-
-
- <script type="text/html" id="toolbar">
- <button class="layui-btn layui-btn-sm" lay-event="edit">编辑button>
- <button class="layui-btn layui-btn-sm" lay-event="del">删除button>
- <button class="layui-btn layui-btn-sm" lay-event="reset">重置密码button>
- script>
通过JavaScript代码实现页面
- let table=null;
- let $ = null;
- let jdlj = null;
- var row=null;//保存在data集合的内容
-
- layui.use(['table','jquery'], function(){
- table = layui.table;
- $ = layui.jquery;
- jdlj="${jdlj}";
-
- //默认查询书本
- loadBooks();
-
- //查询书本
- $("#queryUser").click(function() {
- loadBooks();
- });
-
-
- //新增用户
- $("#addUser").click(function() {
- layer.open({
- type: 2, //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
- title: '增加用户',
- area: ['600px', '350px'], //宽高
- skin: 'layui-layer-rim', //样式类名
- content: jdlj+'/editUser.jsp'
- });
- });
-
- //得到表单数据
- table.on('tool(userTable)',function(e){
- console.log(e);
- if(e.event == 'edit'){//执行修改
- row=e.data;//将data集合传到修改页面
- layer.open({
- type: 2, //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
- title: '修改用户',
- area: ['600px', '350px'], //宽高
- skin: 'layui-layer-rim', //样式类名
- content: jdlj+'/editUser.jsp'
- });
- }
- });
-
- });
-
- //查询用户信息
- function loadBooks() {
-
- table.render({
- elem: '#userTable',
- url: jdlj + '/UserAction.action?methodName=queryUser',
- cols: [[/* 表格字段 */
- {field:'id', width:80, title: 'ID'},
- {field:'name', width:180, title: '姓名', sort: true},
- {field:'loginName', width:180, title: '登录名', sort: true},
- {field:'roleName', width:180, title: '角色'},
- {field:'', width:240,title:'操作', toolbar: '#toolbar'}
- ]],
- page: true,//分页实体
- request: {/* 查询参数 pageName:当前页;rows:当前页显示的行数*/
- pageName: 'page',
- limitName: 'rows'
- },
- method: 'post',
- where: {/* 查询字段 */
- name: $("#name").val()
- },
- loading: true,
- });
- }