【问题标题】:how to arrange the data in particular cell in table in EJS如何在 EJS 中的表格中排列特定单元格中的数据
【发布时间】:2019-08-30 02:08:39
【问题描述】:

我试图在我的 home.ejs 上以表格格式显示记录,我在一个单元格中显示与一个特定记录相关联的多个记录的编码有问题

这里我有一个 Task_Name 的 3 个 cmets,根据我的代码,每行显示记录意味着 2X3 总共显示 6 行,但我需要为一个 Task_Name 显示 - 所有 cmets 需要显示在单行中然后我只得到 2 行

抱歉解释太长,请提供逻辑或解决方案

电流输出

预期输出

输出屏幕截图

EJS 部分:

<% for(var i=0; i < status_info.length; i++) { %>
    <tr>
        <td><%= i+1 %></td> 
        <td><%= status_info[i].Task_Name %></td>
        <td><%= status_info[i].status_Name %></td>
        <td><%= status_info[i].Cmnt_Details %>
    </tr>
<% } %>

server.js:

app.get('/',(req, res)=>{
    var getQuery = "select * from table_info"        
    mysqlConnection.query(getQuery,function(err,result){
        if(err) throw err
        else {
            res.render('DashPrac',{status_info:result});
            // console.log(result.length)
        }
    })
});

我从数据库中获取的数据

[ RowDataPacket {
Task_Name: 'Architecture Design',
Cmnt_Details: 'Trying to load the data in all the tables...',
status_Name: 'WIP' },
 RowDataPacket {
Task_Name: 'Architecture Design',
Cmnt_Details: 'Checked the details',
status_Name: 'WIP' },
 RowDataPacket {
Task_Name: 'Architecture Design',
Cmnt_Details: 'Testing is going on',
status_Name: 'WIP' },
 RowDataPacket {
Task_Name: 'Testing Plan',
Cmnt_Details: 'Teting plan to be prepared',
status_Name: 'InProgress' } ]

【问题讨论】:

  • 请发布预期输出
  • 你目前的输出是什么?
  • Task_name Status cmets AI WIP 未完成 两小时内完成 测试上线完成
  • 请您修改您的问题,在此处发布预期和当前输出。
  • 实际上我正在尝试显示表格,但我无法将其粘贴到此处

标签: html mysql node.js ejs


【解决方案1】:

我在上面第二个@Dhruv 的回答,但是如果你不想对你的 server.js 做任何改变,而是你想玩 EJS 你的代码应该是这样的:

<% 
var prevTask_Name = status_info[0].Task_Name;
var prevStatus_Name = status_info[0].status_Name;

for(var i=0; i < status_info.length; i++) {  
    <tr>
        <td>
%>
<%= i+1 %></td> 
<%  if(i == 0 )
    {
%>
        <td><%= status_info[i].Task_Name %></td>
<%  }
    else
    {
        if(status_info[i].Task_Name == prevTask_Name)
        {
%>
            <td>&nbsp;</td>
<%
        }
        else
        {
%>
            <td><%= status_info[i].Task_Name %></td>
<%      }
    }
    if(i == 0 )
    {
%>
        <td><%= status_info[i].status_Name %></td>
<%  }
    else
    {
        if(status_info[i].status_Name == prevStatus_Name)
        {
%>
            <td>&nbsp;</td>
<%      }
        else
        {
%>
            <td><%= status_info[i].Status_Name %></td>
<%      }
    }
%>  
        <td><%= status_info[i].status_Name %></td>
        <td><%= status_info[i].Cmnt_Details %>
<% 
prevTask_Name = status_info[i].Task_Name;
prevStatus_Name = status_info[i].status_Name;
} %>

【讨论】:

    【解决方案2】:

    您需要修改查询和结果集才能获得此输出。这是一个可以为您工作的解决方案。

    server.js

    app.get('/',(req, res)=>{
        var getQuery = "select * from table_info order by Task_Name, status_Name"        
        mysqlConnection.query(getQuery,function(err,result){
            if(err) throw err
            else {
                let prevObj={};
                let filteredResult=result.map(e=>{
                  let newElem={...e}
                  if(newElem.status_Name === prevObj.status_Name)
                    newElem.status_Name="";
                  if(newElem.Task_Name ===prevObj.Task_Name)
                    newElem.Task_Name="";
                  prevObj={...e}
                  return newElem;
                })
                res.render('DashPrac',{status_info:filteredResult});
                // console.log(result.length)
            }
        })
    });
    

    其余代码可以保持不变。它会达到你需要的结果。

    如果您想将所有的 cmets 与 sql 查询相结合,这非常简单。

    app.get('/',(req, res)=>{
        var getQuery = "select Task_Name, status_Name,group_concat(Cmnt_Details) as Cmnt_Details from table_info group by Task_Name, status_Name"        
        mysqlConnection.query(getQuery,function(err,result){
            if(err) throw err
            else {
                res.render('DashPrac',{status_info:result});
                // console.log(result.length)
            }
        })
    });
    

    【讨论】:

    • 谢谢,我可以消除重复的值,但我需要在我用输出屏幕编辑帖子的单行中指定 cmets
    • 我认为您想要做的事情会在编辑时产生更多问题。我认为可以通过使用 foreach 而不是 map 并以不同方式存储文件集来轻松完成...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2021-11-27
    • 2018-10-12
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多