是否有设置停止在DataTable中显示“表中没有可用数据”?

Posted

技术标签:

【中文标题】是否有设置停止在DataTable中显示“表中没有可用数据”?【英文标题】:Is there a setting to stop the display of "No data available in table" in the DataTable? 【发布时间】:2018-08-22 12:22:57 【问题描述】:

最初我的表没有数据,我得到“表中没有可用数据”,这是预期的功能。

我不希望创建任何文本或行,因为我将根据用户操作通过 Ajax 填充表格。

是否有停止在表格中显示该行的设置?我似乎找不到一个。此代码有效,但第一行显示“表中没有可用数据”。这是 jQuery 代码:

$.ajax(
    type: 'GET',
    url: '/Home/postInformationofConferenceTitle',
    dataType: "JSON",
    success: function (data) 

        $.post("/Home/selectRooms",  xtitle: data.xglobalTitle , function (data) 

            var ndx = 0;
            $.each(data.xroom_name, function (key, value) 

                var Xroom_name = data.xroom_name[ndx];
                var Xroom_plan = data.xroom_plan[ndx];

                var column =
                  ('<tr>' +
                    '<td>' +
                    '<div class="img-container">' +
                    '<img src="../../assets/img/room-plan/' + Xroom_plan + '"  id="imgsrc">' +
                    '</div>' +
                    '</td>' +
                    '<td id="imgname">' + Xroom_name + '</td>' +
                    '<td class="text-right">' +
                    '<a href="#" class="btn btn-simple btn-warning btn-icon edit" data-toggle="modal" data-target="#myModal"><i class="fa fa-edit"></i></a>' +
                    '<a href="#" class="btn btn-simple btn-danger btn-icon remove" ><i class="fa fa-times"></i></a>' +
                    '</td>' +
                    '</tr>');

                document.getElementById('colmn').innerhtml = document.getElementById('colmn').innerHTML + column;

                ndx++;

            );

        );

    
)

【问题讨论】:

当你向dataTables API发送一个空数组时,它会自动返回“No Data Is Available”。这没有发生吗? 它正在发生。我说“有没有设置停止在表格中显示这一行?我好像找不到。” 如果您愿意,您可以从dataTables.min.js 中删除该文本,但是当您有一个空数组时,只需使用 jquery 删除该表的第一行(在 tbody 内),而不是更改源文件。你能展示一下你尝试过的东西吗 我更新了我的问题。你可以看看那里 我只是想删除数据库中没有数据时出现的“表中没有可用数据”文本。因为第一行总是显示“表中没有可用数据”。 【参考方案1】:

我猜您可能正在查看数据表的语言设置。

language : 
        "zeroRecords": " "             
    ,

(注意“”之间的空格。(这是一个hack,但现在发现它很有用。)

$(document).ready(function () 

	var serverData = [
	]
	var table = $('#example').DataTable(
   language : 
            "zeroRecords": " "             
        ,
		data: serverData,
		columns: [
			 data: "name" ,
			 data: "age" ,
			 data: "isActive" ,
			 data: "friends" ,
		],
		'columnDefs': [
			'targets': 2,
			'render': function (data, type, full, meta) 
				let checked = ''
				if (data) 
					return '<input type="checkbox" checked / >';
				
				else 
					return '<input type="checkbox"  / >';
				
				return data;
			
		,
		
			'targets': 3,
			"render": function (data, type, full, meta) 
				var selectInitial = "<select>";
        var selectClosing = "</select>";
        var options = '';
				$.each(data, function (key, value) 
					options = options+"<option value="+value.id+">"+value.name+"</option>";
				);
				return selectInitial+options+selectClosing;
			
		
		],
	);

);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src='https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js'></script><link rel='stylesheet prefetch' href='https://cdn.datatables.net/1.10.9/css/jquery.dataTables.css'>

<table id="example" class="display"  cellspacing="0">
        <thead>
            <tr>
                <th>name</th>
                <th>age</th>
                <th>isActive</th>
                <th>friends</th>
                 
            </tr>
        </thead>
    </table>

【讨论】:

这行得通,但是这次表格上的删除和更新按钮在单击时不起作用。为此我能做些什么 当你没有数据时,你不会得到删除/更新按钮吧? serverData 在我的示例中是一个变量。您需要适当地修改它以适合您的示例。您只需要获取语言对象 您能否留下您的电子邮件地址或Skype,以便我获得您的支持。 我知道我来晚了。看看有什么我可以帮忙的吗?【参考方案2】:

它对我有用。

var someTableDT = $("#some-table").on("draw.dt", function () 
    $(this).find(".dataTables_empty").parents('tbody').empty();
).DataTable(/*init object*/);

【讨论】:

嗨,欢迎来到 Stack Overflow。在回答已经有公认答案的问题时,请务必添加一些额外的见解,说明为什么您提供的回复是实质性的,而不是简单地呼应原始发帖人已经审查过的内容。这在您提供的“纯代码”答案中尤其重要。【参考方案3】:

以下对我有用:

$(document).ready(function () 
        $("#TABLE_ID").DataTable();      
        $(".dataTables_empty").empty();
    );

【讨论】:

【参考方案4】:

下一个 CSS 为我工作,完全隐藏了该块(不仅删除文本):

.dataTables_empty

    display:none;

【讨论】:

以上是关于是否有设置停止在DataTable中显示“表中没有可用数据”?的主要内容,如果未能解决你的问题,请参考以下文章

Jquery datatable 在从简单的 Web 服务调用 Web 方法时未在表中显示任何数据

“表中没有可用数据”即使在数据表加载后也会显示

如何在PrimeFaces中找出DataTable是否处于行编辑状态?

无法从 DataTable 中选择 DataRow

如何在 DT::datatable() 中搜索时停止 xaringan 的键盘快捷键?

c#中datatable绑定comboBox显示数据有重复怎么处理?取值时未用SQL语句。