【问题标题】:DataTables Warning: Requested unknown parameter 'pCodigo' for row 0DataTables 警告:请求第 0 行的未知参数“pCodigo”
【发布时间】:2015-06-23 09:52:34
【问题描述】:

我试图在单击按钮时填充表格,从 ASP.NET ApiController 获取数据。我已经尝试过几乎所有在 SO 中针对其他类似问题发布的解决方案,但总是会出现该错误。 希望有人看到这个问题。

html 标记:

<input type="button" ID="btnSearch" name="btnSearch" class="btn btn-success" value="Buscar" />
<table id="ResultsTable" class="table table-bordered table-condensed" style="font-size: 11px;">
<thead>
    <tr>
        <th><%=GetLiteral("Codigo")%></th>
        <th><%=GetLiteral("Descripcion")%></th>
        <th><%=GetLiteral("Marca")%></th>
        <th><%=GetLiteral("IC")%></th>
        <th><%=GetLiteral("IV")%></th>
        <th><%=GetLiteral("Tarifa")%></th>
        <th><%=GetLiteral("Precio")%></th>
        <th><%=GetLiteral("P")%></th>
        <th><%=GetLiteral("Total")%></th>
        <th><%=GetLiteral("Central")%></th>
        <th><%=GetLiteral("Centro")%></th>
    </tr>
</thead>
<tbody>
</tbody>

JS:

$(document).ready(function () {
    var SearchTable = $("#ResultsTable").DataTable({
        columns: [
            { data: "pCodigo" },
            { data: "rDescripcion" },
            { data: "rMarca" },
            { data: "xIndiceCarga" },
            { data: "xIndiceVelocidad" },
            { data: "TARIFA" },
            { data: "PRECIO" },
            { data: "PROVIENE" },
            { data: "TOTAL" },
            { data: "CENTRAL" },
            { data: "CENTRO" }
        ],
        ordering: false,
        searching: false
    });

    $("#btnSearch").click(function () {
        var searchText = $("#<%=txtSearch.ClientID%>").val();
        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: '<%=ResolveUrl("~/api/ProductSearch/")%>' + searchText + '/0138107',
            dataType: "json"
        }).success(function(result) {
            SearchTable.clear().draw();
            SearchTable.rows.add(result).draw();
        }).fail(function(jqXHR, textStatus, errorThrown) {
            alert("FAIL: " + textStatus + " = " + errorThrown);
        });
    });
}

数据样本:

[{
"RowError": "",
"RowState": 2,
"Table": [{
    "pCodigo": "10006908",
    "rDescripcion": "225/65/16-VAN100(112R)CO B-B-72-2",
    "rMarca": "CONTI",
    "xDibujo": 254176,
    "xIndiceCarga": "112",
    "xIndiceVelocidad": "R",
    "xEje": 0,
    "xAplicacion": 0,
    "xDecimales": false,
    "xTipoIVA": 2,
    "xTasa": 2.550,
    "TARIFA": 203.50,
    "PRECIO": 105.54,
    "PROVIENE": "LG",
    "COLOR": 8454143,
    "TOTAL": 3.00,
    "CENTRAL": 2.00,
    "CENTRO": 2.00,
    "xControl": true
},
{
    "pCodigo": "30000159",
    "rDescripcion": "225/65/16-RF09(112R)ROTALLA E-C-73-3",
    "rMarca": "ROTAL",
    "xDibujo": 253405,
    "xIndiceCarga": "112",
    "xIndiceVelocidad": "R",
    "xEje": 0,
    "xAplicacion": 0,
    "xDecimales": false,
    "xTipoIVA": 2,
    "xTasa": 2.550,
    "TARIFA": 69.00,
    "PRECIO": 49.29,
    "PROVIENE": "LG",
    "COLOR": 16777088,
    "TOTAL": 89.00,
    "CENTRAL": 55.00,
    "CENTRO": 55.00,
    "xControl": true
}],
"ItemArray": ["30000159",
"225/65/16-RF09(112R)ROTALLA E-C-73-3",
"ROTAL",
253405,
"112",
"R",
0,
0,
false,
2,
2.550,
69.00,
49.29,
"LG",
16777088,
89.00,
55.00,
55.00,
true],
"HasErrors": false
}]

注意:html 标记中的 GetLiteral 函数返回一个列名国际化的字符串,该字符串可能与显示的文本和列名不同。我认为这不是问题。 提前致谢!

【问题讨论】:

    标签: asp.net-web-api datatables


    【解决方案1】:

    您必须插入Table 数组:

    }).success(function(result) {
       SearchTable.clear().draw();
       SearchTable.rows.add(result[0].Table).draw();
    })
    

    或者,您可以循环遍历 Table 数组并单独添加每个项目:

    }).success(function(result) {
       SearchTable.clear().draw();
       for (var i=0;i<result.Table.length;i++) {
          SearchTable.row.add(result[0].Table[i]).draw();
       }
    })
    

    【讨论】:

    • 这不会引发任何错误,但也不会在桌面上呈现任何内容。
    • @Sergio 更新,过早添加答案:( 没有区分行和行。
    • 很抱歉,但还是不行。第一个解决方案什么都不做。第二个抛出“表”未定义错误。当我检查结果时,我看到了一些奇怪的东西。它没有表根元素,但有十二个节点(行)。每个节点都有一个 Table 和 Itemarray 子节点,第一个包含所有行,第二个包含该节点的字段数据。但是所有信息都显示有索引,并且缺少字段名称。
    • @Sergio,不要为此感到难过!!是我没有意识到您的 JSON 实际上是一个包含 1 个项目的数组,包含所有其他项目,包括 Table 数组。所以result[0].Table 肯定有效,我自己测试过。抱歉,我只是假设您的 JSON 构造得更直,并且只关注 Table 项:(
    • 是的!那行得通,谢谢!但我仍然不明白为什么 json 响应会以这种方式出现。 %/
    猜你喜欢
    • 2016-09-24
    • 2021-06-08
    • 2020-11-30
    • 2014-09-07
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多