DataTables.net Кнопка экспорта, не генерирующая файл Excel

#c# #jquery #datatables-1.10

#c# #jquery #таблицы данных -1.10

Вопрос:

Я получаю следующую ошибку, когда нажимаю на кнопку экспорта Datatables.net .

Ниже приведен мой код

  $.ajax({
    type: "POST",
    url: uri,
    data: JSON.stringify(args),
    contentType: "application/json;charset=utf-8",
    success: function (data, status, xhr) {
        //alert("The result is : "   data);            
        if (!data.d) {
            $("#gvCurr").DataTable();
        }
        else {
            $("#gvCurr").DataTable({
                "aaData": JSON.parse(data.d),
                "bDestroy": true,
                dom: 'Bfrtip',
                deferRender: true,
                "bLengthChange": false,
                "bPaginate": false,                    
                buttons: [
                    {
                        extend: 'excel',
                        text: '<i class="fas fa-file-excel"></i> Export',
                        className: "btn btn-primary",
                        filename: 'DomesticInvoiceReport - '   moment().format("DD-MMM-YYYY"),                            
                    }
                ],                    
                "columns": [                        
                    { "data": "ProjectNo" },                        
                    { "data": "CountryName" },                        
                    { "data": "StateName" },                        
                    { "data": "SectorName" },
                    { "data": "CoOrdName" },
                    { "data": "Curr1" },

                    { "data": "InvoiceNo_1" },
                    { "data": "InvoiceDate_1" },
                    { "data": "Month_1" },
                    { "data": "Year_1" },                        


                    { "data": "TotalFee_1" },
                    { "data": "EscalationAmt_1" },
                    { "data": "CurrentOPEAmt_1" },
                    { "data": "CGSTPerc" },
                    { "data": "SGSTPerc" },
                    { "data": "TotalTaxPerc_1" },
                    { "data": "TotalTaxAmt_1" },
                    { "data": "CurrentInvoiceAmt_1" },                        
                    {
                        mRender: function (data, type, row) {
                            if (row.IsWithheld_1 == "" || row.IsWithheld_1 == 0)
                                return 'No';
                        }
                    },
                    { "data": "WithheldAmt_1" },
                    { "data": "BalanceInHandUptoThisInv_1" }
                    
                ],
                "order": [[0, "asc"]]
            });
        }
        $("#entry").hide();
        $("#list").show();
    },
    error: function (xhr) {
        alert(xhr.responseText);
    }
});
  

если вы видите в коде, если я закомментирую столбцы после { «data»: «Year_1» } , он генерирует файл Excel, и если я включу столбцы после этого, это выдаст мне ошибку, показанную на прилагаемом изображении. Таким образом, это не проблема неправильного кода или неправильной последовательности файлов js

Я включил эти настройки в web.config

 <httpRuntime targetFramework="4.7.2" maxRequestLength="2147483647" requestLengthDiskThreshold="2097152" executionTimeout="240" />    

<jsonSerialization maxJsonLength="2147483644" />
  

При извлечении записи отображаются правильно. Во время экспорта выдает ошибку. Я не уверен, чего мне здесь не хватает.

Ошибка экспорта

Ответ №1:

Я полагаю, что у вас есть эта проблема :

 {
  mRender: function (data, type, row) {
     if (row.IsWithheld_1 == "" || row.IsWithheld_1 == 0)
         return 'No';
     }
},
  
  1. обратные вызовы рендеринга применяются к определению столбца, они не могут оставаться одни
  2. Вы должны вернуть значение, если вы вернетесь undefined , вы получите «обрезка не является функцией«

Правильный способ

 { 
  data: "IsWithheld_1",
  render: function(data, type, row) {
    return (data === '' || data == 0) ? 'No' : ''
  }
}
  

Комментарии:

1. ДА. Это была проблема. Я изменил это, и это сработало.