DataTables:如何从JSON响应或参数修改无结果(zeroRecords)提示信息
解决方案
1. 修改后端Handler代码,新增自定义消息字段
直接在返回的JSON结果中添加独立字段传递无结果提示,无需将消息绑定到每条数据(无结果时aaData为空数组,原方式失效):
Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest ' 保留原有变量定义、参数获取逻辑... Dim listWOs As New List(Of WorkOrder)() Dim filteredCount As Integer = 0 ' 初始化默认无结果提示 Dim customZeroMessage As String = "没有匹配的记录" Using con As New SqlConnection(cs) ' 保留原有数据库调用逻辑... Dim rdr As SqlDataReader = cmd.ExecuteReader() While rdr.Read() ' 保留原有WorkOrder对象赋值逻辑... filteredCount = Convert.ToInt32(rdr("TotalCount")) listWOs.Add(workOrder) End While End Using ' 根据无结果原因修改提示消息 If filteredCount = 0 Then ' 可根据权限、筛选条件等实际场景细化消息内容 customZeroMessage = "当前权限或筛选条件下没有可显示的工单记录" End If ' 返回结果新增自定义消息字段 Dim result = New With { _ Key .iTotalRecords = GetTotalCount(), _ Key .iTotalDisplayRecords = filteredCount, _ Key .aaData = listWOs, _ Key .customZeroMessage = customZeroMessage _ } Dim js As New JavaScriptSerializer() context.Response.Write(js.Serialize(result)) End Sub
2. 前端修改DataTables初始化代码,动态接收自定义消息
利用DataTables的xhr回调事件,每次请求完成后读取后端返回的自定义消息并更新无结果提示:
$(document).ready(function () { var table = $('#npwoList').dataTable({ dom: 'Bfrtip', columns: [ { 'data': 'WO_Id' }, { 'data': 'Priority' }, { 'data': 'Date_Submitted' }, { 'data': 'Submitted_By' }, { 'data': 'Task' }, { 'data': 'Material' }, { 'data': 'ChargeNumber' }, { 'data': 'Summary' }, { 'data': 'Part_Number' }, { 'data': 'QTY' }, { 'data': 'Department' }, { 'data': 'Machine' }, { 'data': 'Full_Name' }, { 'data': 'Status' }, { 'data': 'Requested_Completion' }, { 'data': 'Completion_Date' }, { 'data': 'Late' } ], columnDefs: [ { "targets": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], "visible": true, "orderable": true, "sortable": true, "searchable": true, }, { "targets": [16], "visible": false, "orderable": false, "sortable": false, "searchable": false } ], bServerSide: true, sAjaxSource: 'Handlers/WODataHandler.ashx', deferRender: true, lengthMenu: [ [25, 50, 100, 1000], ['25 rows', '50 rows', '100 rows', 'Show all'] ], buttons: ['pageLength', { extend: 'colvis', collectionLayout: 'fixed two-column', postfixButtons: ['colvisRestore'] } ], language: { buttons: { colvis: 'Hide/Show Columns' }, zeroRecords: "没有匹配的记录" }, "scrolly": 400, "stateSave": true, "order": [[0, "desc"]], "stateSaveParams": function (settings, data) { data.start = 0; }, // 新增xhr回调处理自定义消息 "xhr": function () { var xhr = $.fn.dataTable.ext.oApi._fnSettingsFromNode(this).jqXHR; if (xhr && xhr.responseJSON) { var customMsg = xhr.responseJSON.customZeroMessage; if (customMsg) { this.api().settings()[0].language.zeroRecords = customMsg; } } }, fnRowCallback: function (row, data, displayIndex) { // 保留原有行样式逻辑... } }); $('#npwoList tbody').on('click', 'tr', function () { // 保留原有行点击逻辑... }); });
关键说明
- 后端通过独立字段传递消息,避免无结果时无数据项导致无法获取消息的问题
- 前端通过
xhr回调动态更新提示文本,确保每次无结果时都能显示对应原因 - 可根据实际业务场景在后端细化提示内容,比如区分权限限制、筛选条件过严等情况
内容的提问来源于stack exchange,提问作者SoundWaves
相关产品推荐
相关产品推荐

