问题描述
我有一个应用程序,其中包含大量(约 50 个)网格,每个网格具有不同的字段/列结构(因此它们无法合并)。用户浏览应用程序,将记录添加到字段,并编辑这些记录。导航使用侧边栏,每个侧边栏元素加载不同的网格。
所有这些网格都是在启动时构建的,使用 github 上的 w2ui starter。网格和表单在配置文件中定义。 main.js 调用这些文件来创建每个网格:
import ABCconf from './ABC-conf.js'
$().w2grid(ABCconf.ABC_grid)
在创建路由的同一个文件中,是点击相应侧边栏元素时加载网格的逻辑:
w2ui.app_layout.html('main',w2ui.ABC_grid)
重要说明 - 这会在“主”面板中加载单个网格。我想在摘要页面上加载所有记录长度 >0 的网格,这意味着它们都需要进入一个面板(假设它是“主”)。我假设我会使用一系列适当命名的 div 元素,例如 div id='ABC'。
此时我被困在将网格插入到 div 中。出于调试目的,我尝试过:
// this works and puts text into div
document.getElementById("ABC").innerHTML = `different data`;
// this puts '[object Object]' into div
document.getElementById("ABC").innerHTML = w2ui.ABC_grid;
我知道如何使用 w2grid 构造函数来构建网格并填充 div,但不知道如何采用入门框架 + 现有网格并在同一面板中复制其中的许多网格。我已经仔细阅读了文档,但我就是不明白。
解决方法
您可以使用网格的 render
方法来更改呈现网格的容器。
在下面的代码中,我最初在 grid1
中创建网格,并通过单击按钮将容器更改为 grid2
。
$(function () {
$("#btn_grid_render").click(function(){
w2ui.grid.render('#grid2')
});
$('#grid1').w2grid({
name: 'grid',columns: [
{ field: 'email',text: 'Email',size: '100%' },{ field: 'profit',text: 'Profit',size: '120px',render: 'money' },{ field: 'sdate',text: 'Start Date',render: 'date' }
],records: [
{ recid: 1,fname: 'John',lname: 'Doe',email: 'john@gmail.com',profit: 2500,sdate: '1/3/2012' },{ recid: 2,fname: 'Stuart',lname: 'Motzart',email: 'stuart@gmail.com',profit: 1004,sdate: '4/13/2012' },{ recid: 3,fname: 'Jin',lname: 'Franson',email: 'jin@gmail.com',profit: 473,sdate: '3/3/2012' },{ recid: 4,fname: 'Susan',lname: 'Ottie',email: 'susan@gmail.com',profit: 304,sdate: '5/3/2012' },{ recid: 5,fname: 'Kelly',lname: 'Silver',email: 'kelly@gmail.com',profit: 9300,sdate: '8/19/2012' },{ recid: 6,fname: 'Francis',lname: 'Gatos',email: 'francis@gmail.com',sdate: '6/12/2012' },{ recid: 7,fname: 'Mark',lname: 'Welldo',email: 'mark@gmail.com',profit: 3400,sdate: '8/13/2012' },{ recid: 8,fname: 'Thomas',lname: 'Bahh',email: 'thomas@gmail.com',profit: 2030,sdate: '4/31/2012' },{ recid: 10,profit: 13004,]
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://rawgit.com/vitmalina/w2ui/master/dist/w2ui.min.css" rel="stylesheet"/>
<script src="https://rawgit.com/vitmalina/w2ui/master/dist/w2ui.min.js"></script>
<button id="btn_grid_render">Render Grid to second div</button>
<div id="grid1" style="width: 100%; height: 200px; background: red"></div>
<div id="grid2" style="width: 100%; height: 200px; background: blue"></div>