jQuery DataTables:避免单元格中的换行

时间:2018-10-16 08:00:31

标签: javascript jquery html datatables

我没有CSS问题,但是是逻辑问题。我想摆脱表格单元格中的自动换行符。由于某种原因,即使是HTML本身,也将长数据分成两行。这意味着经典的CSS属性在这里都无济于事。

示例:

<td class="sorting_1">SAP-IT Projekt
 Welle 1</td>

td元素内部的值一分为二。

我尝试过的事情:

            {
                "data": "Project.Name",
                "editField": "ProjectEntry.IdProject",
                "render": function (project) {
                    // This code doesn't really work, the cells still contain linebreaks.
                    project = project.trim().replace(/(\r\n\t|\n|\r\t)/gm, "");
                    console.log(project);
                    return project;
                }
            }

注意:此渲染函数中的日志记录输出不带换行符的字符串。

我认为我缺少防止这些自动换行的关键配置。

该表曾经具有“响应式”的配置,但我已将其删除。


更新:

这是每个单元格的样式:

#ProjectEntryDataContainer, #ProjectEntryDataContainer > div > table > tbody > tr > td {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    table-layout: fixed;
}

根据Chrome的DevTools,此样式已应用于每个单元格。 table元素具有类nowrap

正如我所提到的,CSS与我的问题几乎没有关系。文本显示显示在一行中,但是HTML元素中有一个换行符。我想摆脱HTML中的换行符,以便可以使用jQuery代码正确搜索单元格。我目前正在使用以下代码搜索单元格:

var project = rowData.Project.Name.trim().replace(/(\r\n\t|\n|\r\t)/gm, "");

// Find our required cell that we want to edit. If we can't find one, create a new one.
    var colHeaderTarget = $("#ProjectEntryData").find('th:contains("Arbeitsstunden")')[0];
    var rowHeaderTarget = $("#ProjectEntryData").find('td:contains("' + project + '")')[0];

    var projectRows = $("#ProjectEntryData").find("tr:contains('" + project + "')");
    console.log(project);
    console.log(projectRows);

只要单元格没有换行符,此代码就可以很好地发挥作用。

screenshot of the application


我刚刚发现我的JSON数据包含换行符。找到更多信息后,我会进行更新。

{IdProject: 35, Name: "SAP-IT Projekt
↵ Welle 1", Description: null,

更新:SQL数据包含换行符...请参见答案。

1 个答案:

答案 0 :(得分:0)

结果表明,当数据库包含换行符时,您将在HTML中获得换行符。如果有人解决方案导致DataTables过滤掉单元格数据中的换行符,我将把它标记为可接受的答案。否则,我会建议大家避免在SQL数据中出现换行符。