You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:57:01