有没有人出现过我这种问题啊,动态添加table数据但是新添加的数据一直渲染不出来的啊。有没有好人能赐教一下😭
父页面
子页面
js代码
layui.use(['table', 'form', 'jquery', 'layer'], function () {
let table = layui.table;
let $ = layui.jquery;
let layer = layui.layer;
let tableData = [];
$.ajax({
url: '../../admin/data/stuInfo.json'
, type: "get"
, dataType: "json"
, success: function (result) {
tableData = result.data;
table.render({
elem: '#stu-table-all',
toolbar: '#stu-toolbar',
defaultToolbar: [],
skin: 'line',
page: true,
cols: [
[
{ type: 'checkbox' },
{ field: 'id', title: '学号', width: '20%', align: 'center' },
{ field: 'stuName', title: '学生姓名', width: '20%', align: 'center' },
{ field: 'college', title: '所属院系', width: '20%', align: 'center' },
{ field: 'class', title: '年级', width: '20%', align: 'center' },
]
],
data: tableData
});
}
});
$(".addBtn").on("click", function () {
var oldData = parent.layui.table.cache["stu-table-choose"];
console.log("old " + JSON.stringify(oldData));
//打印父页面的table信息
var checkStatus = table.checkStatus('stu-table-all');
var newData = checkStatus.data;
console.log("new " + JSON.stringify(newData));
//打印子页面被选中行的信息
for (let i = 0; i < newData.length; i++) {
oldData.push(newData[i]);
}
console.log("reload " + JSON.stringify(oldData));
//打印重组的table信息
parent.layui.table.reload('stu-table-choose',
{
data: oldData
})
})
})
打印台结果:
layui的js引入了吗
从你的代码片段中,我注意到你已经成功的获取了新添加的数据,并尝试将其添加到oldData
数组中。然而,你并没有使用这个新的oldData
数组重新渲染表格,这可能是你无法看到新添加数据的原因。
在layui中,如果你需要更新表格的数据,可以使用table.reload
方法。首先,你需要确保你的表格实例是存在的,然后你可以使用table.reload
方法更新数据。
以下是一个示例代码:
// 假设你的表格实例是tableIns
var tableIns = table.render({
elem: '#stu-table-all',
toolbar: '#stu-toolbar',
defaultToolbar: [],
skin: 'line',
page: true,
cols: [
[
{ type: 'checkbox' },
{ field: 'id', title: '学号', width: '20%', align: 'center' },
{ field: 'stuName', title: '学生姓名', width: '20%', align: 'center' },
{ field: 'college', title: '所属院系', width: '20%', align: 'center' },
{ field: 'class', title: '年级', width: '20%', align: 'center' },
]
],
data: tableData
});
$(".addBtn").on("click", function () {
var oldData = parent.layui.table.cache["stu-table-choose"];
console.log("old " + JSON.stringify(oldData));
//打印父页面的table信息
var checkStatus = table.checkStatus('stu-table-all');
var newData = checkStatus.data;
console.log("new " + JSON.stringify(newData));
//打印子页面被选中行的信息
for (let i = 0; i < newData.length; i++) {
oldData.push(newData[i]);
}
console.log("reload " + JSON.stringify(oldData));
// 使用reload方法更新表格数据
tableIns.reload({
data: oldData // 这里使用新的数据数组
});
});
在上述代码中,我假设你的表格实例是tableIns
,你可能需要根据你的实际代码调整这个变量名。在tableIns.reload
方法中,我传入了新的数据数组oldData
,这将导致表格使用新的数据进行渲染。
你不需要ajax调用,table对象可以自动获取数据。
table.render({
elem: '#stu-table-all',
url: '../../admin/data/stuInfo.json', //
toolbar: '#stu-toolbar',
defaultToolbar: [],
skin: 'line',
page: true,
cols: [[
{ type: 'checkbox' },
{ field: 'id', title: '学号', width: '20%', align: 'center' },
{ field: 'stuName', title: '学生姓名', width: '20%', align: 'center' },
{ field: 'college', title: '所属院系', width: '20%', align: 'center' },
{ field: 'class', title: '年级', width: '20%', align: 'center' },
]],
//data: tableData
});
【以下回答由 GPT 生成】
您可以尝试以下步骤解决该问题:
示例代码:
<link rel="stylesheet" href="path/to/layui/css/layui.css">
<script src="path/to/jquery.js"></script>
<script src="path/to/layui/layui.js"></script>
示例代码:
$.ajax({
url: '../../admin/data/stuInfo.json',
success: function(result) {
console.log(result); // 确认获取到的数据是否正确
},
error: function() {
console.log('无法获取数据,请检查数据源地址!');
}
});
示例代码:
var tableData;
$.ajax({
url: '../../admin/data/stuInfo.json',
success: function(result) {
tableData = result.data;
console.log(tableData); // 确认数据是否正确赋值给tableData变量
},
error: function() {
console.log('无法获取数据,请检查数据源地址!');
}
});
示例代码:
<table id="stu-table-all"></table>
示例代码:
var cols = [
{field: 'id', title: 'ID', width: 80, align: 'center'},
{field: 'name', title: '姓名', width: 120, align: 'center'},
{field: 'age', title: '年龄', width: 80, align: 'center'}
];
示例代码:
<link rel="stylesheet" href="path/to/layui/css/layui.css">
如果您按照以上步骤进行检查和调试,问题仍然存在,请您提供更详细的代码和错误信息,以便我们能够更好地帮助您解决问题。
【相关推荐】