DataTables警告:请求第0行的未知参数'pCodigo'

时间:2015-06-23 09:52:34

标签: asp.net-web-api datatables

我正在尝试在按钮单击上填充表格,从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函数返回一个列名为国际化的字符串,该字符串可能与显示的文本和列名称不同。我认为这不是问题。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

您必须插入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();
   }
})