【问题标题】:Setting data row primary ID in TR ID for JQUERY Datatables在 JQUERY 数据表的 TR ID 中设置数据行主 ID
【发布时间】:2014-11-12 14:02:48
【问题描述】:

我正在使用 ASP.Net MVC 并尝试在每个 TR #ID 属性中设置数据源 rowID 值。
问题是我得到表 id=myDataTable - 为第 0 行请求未知参数“1”。
控制器返回:

var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(List);
return Json(new
{
    sEcho = param.sEcho,
    iTotalRecords = result.Count,
    iTotalDisplayRecords = 10,
    aaData = json
},
JsonRequestBehavior.AllowGet);

List 是一个列表:

public class MyObj
{
    public string DT_RowId {get;set;}
    public string NumeLocatie {get;set;}
}

DataTables 初始化程序是:

    oSesizariTable = $('#myDataTable').dataTable({
        "scrollY": "600px",
        "scrollCollapse": true,
        "scrollX": true,
        "bServerSide": true,
        "sAjaxSource": "ControlSLA/AjaxHandler",
        "bProcessing": true,
        "aoColumnDefs": [
            {
                "width": "30",
                "class": "details-control",
                "orderable": false,
                "mdata": null,
                "defaultContent": "",
                "targets": 0
            },
            { "targets": 1, "width": "30", "mdata": "NumeLocatie" },],
        "fnServerData": function (sSource, aoData, fnCallback) {
            aoData.push({ "name": "DeLa", "value": $('#sesizariDeLa').val() });
            aoData.push({ "name": "La", "value": $('#sesizariLa').val() });
            $.getJSON(sSource, aoData, function (json) {
                fnCallback(json)
            });
        }
    });
    $("#Refresh").click(function (e) {
        oSesizariTable.fnDraw();
    });

我刚刚开始使用 ASP.Net 和 MVC...我无法深入了解这一点!!!
从控制器发送的数据是:

{ draw = 1, recordsTotal = 2, recordsFiltered = 10, data = "[[\"DT_RowId\":\"ses_35335\",\"NumeLocatie\":\"Galati 1_\"],[\"DT_RowId\":\"ses_35342\",\"NumeLocatie\":\"3 Craiovei\"]]" }

现在错误是:

table id=myDataTable - 请求未知参数“NumeLocatie” 第 0 行

在错误提示处单击“确定”后,表格将数据中的每个字母显示在 1 行中。

【问题讨论】:

  • 您确定问题仅出在 rowID 上吗?在我看来,您没有将正确的对象传递给桌子。表格是否正确填充?
  • 你是对的。数据似乎格式不正确,因为当我从我的对象列表中创建一个字符串数组列表并返回它时,它正在工作,但我已经验证了序列化列表,它似乎是很好的 JSON 格式。更新了问题以显示数据。

标签: javascript jquery asp.net asp.net-mvc jquery-datatables


【解决方案1】:

好的,我找到了问题,并决定在这里发布答案,也许其他人也会遇到同样的问题。确实,正如@MarioLopez 所说(感谢您为我指明了正确的方向),数据格式存在问题:
这个

var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(List);

用双引号将对象列表括起来:

data = "[[\"DT_RowId\"...

应该是什么时候:

data = [[\"DT_RowId\"...

所以我只需要将列表直接传递给 JSON 响应:

return Json(new
{
    sEcho = param.sEcho,
    iTotalRecords = result.Count,
    iTotalDisplayRecords = 10,
    aaData = list // this is the list<MyObj> not the jsonSerialiser
},
JsonRequestBehavior.AllowGet);

【讨论】:

  • 很好的答案!我认为您应该将其标记为已接受,它将对其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多