数据表 - 在 7 列中的 3 列上请求未知参数

问题描述

我对这个问题无能为力,希望有人能提供帮助。我已经仔细阅读了所有其他答案,但提供的解决方案都没有解决我的问题。以下是 JSON 字符串:

{
  Description="XT86 EXTENDED WARRANTY (3 YEARS)",Id=88,InternalPartNumber="000-063",ManufacturerPartNumber="000-063",SellPrice=350.00,Cost=280.00,Category="Maintenance"
}

以下是我的JS:

 $('#products').dataTable({
            serverSide: true,ajax: {
                url: "/Product/LoadProducts",type: "POST",datatype: "json"
            },columns: [
                { data: "id" },{ data: "internalpartnumber" },{ data: "manufacturerpartnumber" },{ data: "description" },{ data: "category" },{ data: "sellprice" },{ data: "cost" }
            ]
        });

HTML 如下:

<div class="shadow-lg p-1 mb-1 bg-secondary rounded">
    <table class="table table-hover table-striped table-bordered table-sm w-100" id="products">
        <thead class="bg-primary">
            <tr style="cursor:pointer;" class="text-light">
                <th scope="col">Id</th>
                <th scope="col">DCT Part #</th>
                <th scope="col">MFG Part #</th>
                <th scope="col">Description</th>
                <th scope="col">Category</th>
                <th scope="col">Sell Price</th>
                <th scope="col">Cost</th>
            </tr>
        </thead>
    </table>
</div>

结果如下:

DataTables 警告:table id=products - 请求未知参数 'internalpartnumber' 表示第 0 行,第 1 列。有关更多信息 此错误,请参阅 http://datatables.net/tn/4

错误上单击“确定”确实会加载表格,但 3 列缺少数据。

Result of Query

我已尝试删除 { data: "internalpartnumber" } 但随后我在 ManufacturingPartNumber 上收到错误消息。当我删除 { data: "manufacturerpartnumber" } 时,我收到 SellPrice 错误。当我删除 { data: "sellprice" } 时,我没有收到任何错误

当我从 Visual Studio 查看数据时,数据的顺序与我对每个“索引”顺序的顺序相同,但是当您展开每个行索引时,它正在被排序。

Visual Studio view of Data

如果您能提供任何帮助,我们将不胜感激。

LoadProducts 方法如下:

 var results = (from p in _productRepository.GetAllActive
                           select new
                           {
                               p.Id,p.InternalPartNumber,p.ManufacturerPartNumber,p.Description,Category = p.ProductCategory.display,p.SellPrice,p.Cost
                           });

解决方法

DataTable 中的列未按数据顺序设置

HTML

<table id="products" class="display" style="width:100%">
  <thead>
    <tr>
      <th>Description</th>
      <th>Id</th>
      <th>InternalPartNumber</th>
      <th>ManufacturerPartNumber</th>
      <th>SellPrice</th>
      <th>Cost</th>
      <th>Category</th>
    </tr>
  </thead>
</table>

查询

        var ret = {
        data: [
            {
                Description: "XT86 EXTENDED WARRANTY (3 YEARS)",Id: 88,InternalPartNumber: "000-063",ManufacturerPartNumber: "000-063",SellPrice: 350.00,Cost: 280.00,Category: "Maintenance"
             }
         ]
     };

    $('#products').dataTable({
        data: ret.data,columns: [
            { data: "Description" },{ data: "Id" },{ data: "InternalPartNumber" },{ data: "ManufacturerPartNumber" },{ data: "SellPrice" },{ data: "Cost" },{ data: "Category" }
        ]
    });
,

我终于能够弄清楚这一点。在 Chrome 中,我选择了开发人员工具下的网络选项来检查负载。我注意到列的第一个字母是小写的,这与 Visual Studio 显示的不同。

Chrome Network Result

我将列定义更新为以下内容:

 columns: [
                    { data: "id",name: "id",autoWidth: true },{ data: "internalPartNumber",name: "internalPartNumber",{ data: "manufacturerPartNumber",name: "manufacturerPartNumber",{ data: "description",name: "description",{ data: "category",name: "category",{ data: "sellPrice",render: $.fn.dataTable.render.number(',','.',2,'$') },{ data: 'cost','$') }
                ]

现在一切正常。