
这种查询记录用哪种组件展示合适,一时没想到,类似树组件,但是又不是
关注让【道友老李】来帮你解答,本回答参考通义千问qwen-plus编写,并整理提供,如果还有疑问可以点击头像关注,评论或留言根据您提供的图片和描述,这种查询记录展示的需求确实类似于树形结构,但又不完全符合传统的树组件。这里推荐使用**可展开表格(Expandable Table)**来展示这类数据。
假设我们有一个查询记录表,其中每个查询可能包含多个子记录。我们可以使用一个可展开表格来展示这些数据。
[
{
"id": 1,
"query": "查询1",
"children": [
{
"id": 11,
"subQuery": "子查询1"
},
{
"id": 12,
"subQuery": "子查询2"
}
]
},
{
"id": 2,
"query": "查询2",
"children": [
{
"id": 21,
"subQuery": "子查询1"
}
]
}
]
这里使用HTML和JavaScript来实现一个简单的可展开表格。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Expandable Table</title>
<style>
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
}
th {
background-color: #f2f2f2;
text-align: left;
}
.expandable {
cursor: pointer;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<table id="queryTable">
<thead>
<tr>
<th>查询</th>
<th>子查询</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script>
const data = [
{
id: 1,
query: "查询1",
children: [
{ id: 11, subQuery: "子查询1" },
{ id: 12, subQuery: "子查询2" }
]
},
{
id: 2,
query: "查询2",
children: [
{ id: 21, subQuery: "子查询1" }
]
}
];
function renderTable(data) {
const tbody = document.getElementById('queryTable').getElementsByTagName('tbody')[0];
tbody.innerHTML = '';
data.forEach(item => {
const row = document.createElement('tr');
row.className = 'expandable';
row.dataset.id = item.id;
row.innerHTML = `
<td>${item.query}</td>
<td></td>
`;
tbody.appendChild(row);
const childRow = document.createElement('tr');
childRow.className = 'hidden';
childRow.dataset.parentId = item.id;
childRow.innerHTML = `
<td></td>
<td>
<ul>
${item.children.map(child => `<li>${child.subQuery}</li>`).join('')}
</ul>
</td>
`;
tbody.appendChild(childRow);
});
document.querySelectorAll('.expandable').forEach(row => {
row.addEventListener('click', () => {
const parentId = row.dataset.id;
const childRow = document.querySelector(`[data-parent-id="${parentId}"]`);
childRow.classList.toggle('hidden');
});
});
}
renderTable(data);
</script>
</body>
</html>
HTML部分:
<tbody>。JavaScript部分:
data,包含查询和子查询。renderTable函数用于渲染表格,将数据转换为HTML元素并插入到表格中。expandable类,并添加了一个点击事件监听器。hidden类控制)。使用可展开表格可以很好地展示具有层次结构的查询记录,既保持了数据的清晰性,又提供了良好的用户体验。希望这个示例对您有所帮助!如果有任何问题或需要进一步的帮助,请随时告诉我。