Jeesite框架实用 前端页面如何实现双表联动
作者:互联网
文章目录
目录
前言
有时我们需要两张相关联的表,显示在一个页面上,并且具备一些功能。如图:
由图可知,上下两张表是单独的,只有创会id是相同的
上表,可以翻页,并且选中后双击,便可以在下表的审查中,显示id相同的信息。
一、问题
如何制作这张双表联动?
二、使用步骤
1.模板
可以直接复制模板到HTML中,然后在进行修改即可。关键要修改的地方,已标注一二三。
代码如下(示例 由jeesite框架源码中demo提供):
<% layout('/layouts/default.html', {title: '多表格联动示例', libs: ['layout', 'dataGrid']}){ %>
<div class="ui-layout-north">
<div class="main-content">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
// 1. 此处的('岗位列表')}(多表格联动示例) 可以修改 ,是上表的标题
<i class="fa icon-trophy"></i> ${text('岗位列表')}(多表格联动示例)
</div>
</div>
<div class="ui-layout-content">
// 2.这个是上表数据来源和显示多少数据的地方
<#form:form id="searchForm" model="${post!}" action="${ctx}/sys/post/listData" method="post" class="form-inline hide"
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize!3}"
data-order-by="${parameter.orderBy!'post_code desc'}">
<div class="form-group">
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
</div>
</#form:form>
<table id="dataGrid"></table>
<div id="dataGridPage"></div>
</div>
</div>
</div>
</div>
<div class="ui-layout-center">
<div class="main-content">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
// 3. 此处的(('用户列表')}(点击岗位查询对应用户) 可以修改 ,是下表的标题
<i class="fa icon-user"></i> ${text('用户列表')}(点击岗位查询对应用户)
</div>
</div>
<div class="ui-layout-content">
// 4.这个是下表数据来源和显示多少数据的地方
<#form:form id="searchForm2" model="${empUser!}" action="${ctx}/sys/empUser/listData" method="post" class="form-inline hide"
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize!6}"
data-order-by="${parameter.orderBy}">
<div class="form-group">
<label class="control-label">${text('岗位')}:</label>
<div class="control-inline width-90">
//5.这是上表的id值 ,是为了上表双击,下表显示相同id信息。
<#form:input name="employee.postCode" id="postCode" class="form-control"/>
</div>
</div>
</#form:form>
<table id="dataGrid2"></table>
<div id="dataGrid2Page"></div>
</div>
</div>
</div>
</div>
<% } %>
<script>
// 初始化布局
$('body').layout({
north__size: 300,
onresize: function(){
$(window).resize();
}
});
// 初始化DataGrid对象
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
dataGridPage: $('#dataGridPage'),
autoGridHeight: function(){
return $('#searchForm').parent().height() - $('#dataGridPage').height() - 45;
},
columnModel: [
//6.上表显示的信息
{header:'${text("岗位名称")}', name:'postName', index:'a.post_name', width:200, align:"center"},
{header:'${text("岗位编码")}', name:'postCode', index:'a.post_code', width:200, align:"center"},
{header:'${text("排序号")}', name:'postSort', index:'a.post_sort', width:80, align:"center"},
{header:'${text("岗位分类")}', name:'postType', index:'a.post_type', width:100, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_post_type')}, val, '未知', true);
}},
{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:150, align:"center"},
{header:'${text("备注信息")}', name:'remarks', index:'a.remarks', width:200, align:"left"},
{header:'${text("状态")}', name:'status', index:'a.status', width:80, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_status')}, val, '未知', true);
}}
],
onSelectRow: function(id, isSelect, event){
$('#postCode').val(id);
$('#dataGrid2').dataGrid('refresh');
},
// 加载成功后执行事件
ajaxSuccess: function(data){
}
});
// 初始化DataGrid对象
$('#dataGrid2').dataGrid({
searchForm: $("#searchForm2"),
dataGridPage: $('#dataGrid2Page'),
autoGridHeight: function(){
return $('#searchForm2').parent().height() - $('#dataGrid2Page').height() - 45;
},
columnModel: [
// 7.下表显示的信息
{header:'${text("登录账号")}', name:'loginCode', index:'a.login_code', width:200, align:"center"},
{header:'${text("用户昵称")}', name:'userName', index:'a.user_name', width:200, align:"center"},
{header:'${text("员工姓名")}', name:'refName', index:'a.ref_name', width:200, align:"center"},
{header:'${text("归属机构")}', name:'employee.office.officeName', index:'o.office_name', width:200, align:"center"},
{header:'${text("归属公司")}', name:'employee.company.companyName', index:'c.company_name', width:200, align:"center"},
{header:'${text("电子邮箱")}', name:'email', index:'a.email', width:200, align:"center"},
{header:'${text("手机号码")}', name:'mobile', index:'a.mobile', width:200, align:"center"},
{header:'${text("办公电话")}', name:'phone', index:'a.phone', width:200, align:"center"},
{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:200, align:"center"},
{header:'${text("状态")}', name:'status', index:'a.status', width:140, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_status')}, val, '未知', true);
}}
],
// 加载成功后执行事件
ajaxSuccess: function(data){
}
});
</script>
2.修改数据
上表和下表这两个表联动 ,其实jeesite是可以生成两张单独的表,单独的list和form页面的
1. 模板中 第二步和第四步 可以直接从 上表单独的lits 和下表单独的list 中 <#form:form > 找到这个标签里的内容 复制粘贴过来就行。
data-page-size="${parameter.pageSize!3} 其中这个 !3 表示一次显示三行信息。
2. 模板中 第五步
<#form:input name="employee.postCode" id="postCode" class="form-control"/>
这个那么name 要注意 :如果是两张单表 只有id相关联 name 只需填id的名称就行比如 meetingId
这里employee.postCode 是因为 employee是上下表中间的一张关联表,上下表的id不同,employee只存储两张表的id。
3. 模板中第六 第七步
也可以从上下表中单独的list中复制粘贴过来。
总结
修改数据 中的 2 一定要注意,这里name的值填写极易出现错误。
标签:index,name,width,text,Jeesite,双表,header,align,页面 来源: https://blog.csdn.net/weixin_47756184/article/details/118750973