【问题标题】:Requested unknown parameter '9' for row 0 - DataTable error为第 0 行请求未知参数“9” - 数据表错误
【发布时间】:2018-04-20 16:38:27
【问题描述】:

我刚刚将带有IEnumerable<model> 的视图更改为IEnumerable<ViewModel>,这触发了此错误通知。发现了一些类似的问题here。还检查了http://datatables.net/tn/4 以了解更多信息,但无法解决此问题。当我恢复使用 Model 而不是 ViewModel 时,它可以正常工作,这让我感到困惑。由于 Model 和 ViewModel 具有相同的属性。

查看:

    @model IEnumerable<ERPLite.Models.DeliveryScheduleVM>


@section Scripts{
    <script>
        $(function () {

            $('#TableId').DataTable({
                'paging': true,
                'lengthChange': false,
                'searching': true,
                'ordering': true,
                'info': true,
                'autoWidth': false,
                "scrollX": true,
                'order': [[0, 'desc']]//orderby desc
            })
        })
    </script>
}

<div class="box">

    <!-- /.box-header -->
    <div class="box-body">
        <table id="TableId" class="table table-bordered table-striped">
            <thead>
                <tr>
                    <th hidden="hidden">@Html.DisplayNameFor(model => model.ID)</th>

                    <th>@Html.DisplayNameFor(model => model.ProductName)</th>

                    <th>@Html.DisplayNameFor(model => model.Quantity)</th>

                   <th>Actions</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td hidden="hidden">
                            @Html.DisplayFor(modelItem => item.ID)
                        </td>

                        <td>
                            @Html.DisplayFor(modelItem => item.ProductName)
                        </td>

                        <td>
                            @Html.DisplayFor(modelItem => item.Quantity)
                        </td>


                    </tr>
                }

            </tbody>

        </table>
    </div>
    <!-- /.box-body -->
</div>

动作方法:

  public ActionResult Index()
        {
            var deliverySchedules = db.DeliverySchedules.ToList();
            var deliverySchedulesVMList = new List<DeliveryScheduleVM>();
            foreach(var item in deliverySchedules)
            {
                var deliveryScheduleVM = new DeliveryScheduleVM();
                deliveryScheduleVM.ID = item.ID;
                deliveryScheduleVM.ProductID = item.ProductID;
                var product = db.Products.Find(item.ProductID);
                deliveryScheduleVM.ProductName = product.ProductName;
                deliveryScheduleVM.Quantity = item.Quantity;
                deliverySchedulesVMList.Add(deliveryScheduleVM);
            }
            return View(deliverySchedulesVMList);
        }

警告完整说明:

DataTables 警告:表 id=TableId - 请求的未知参数“9” 对于第 0 行。有关此错误的更多信息,请参阅 http://datatables.net/tn/4

感谢任何帮助。提前致谢。

【问题讨论】:

  • 该参数似乎是一个整数,可能您的表格列数超过了 HTML 标记中指定的数量,或者表格单元格的数量不满足DataTable 的要求。

标签: c# asp.net-mvc datatables


【解决方案1】:

标题列和正文列的数量不匹配,结果证明是问题所在。 标记中的&lt;th&gt;Actions&lt;/th&gt;&lt;tbody&gt; 中没有&lt;td&gt;&lt;/td&gt;。 这真是一个愚蠢的错误,我在更改列时忽略了它。 由于我正在根据警告消息的性质检查数据/列部分,因此在此处发布。

【讨论】:

  • 您的问题代码中没有&lt;th&gt;Actions&lt;/th&gt;
  • @StephenMuecke 抱歉,我在复制时不小心删除了。
猜你喜欢
  • 2014-09-16
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多