获取数据集以使用数据表ajax

时间:2015-05-28 14:34:35

标签: javascript c# json linq datatables

我有一个类似的课程:

public class Group
{
     public int RecID { get; set; }
     public int GroupID { get; set; }
     public int Name { get; set; }
}

我得到了这些项目的IList:IList<Group>();

现在我尝试返回此列表的javascript数组,以便我可以将其与jquery datatables一起使用

所以我在我的控制器中尝试了以下内容:

return Json(CacheHelper.Groups, JsonRequestBehavior.AllowGet);

但这给了我以下结果:

[
    {"GroupID":"1","Name":"Group 1","RecID":5637144589},
    {"GroupID":"2","Name":"Group 2","RecID":5637145326}
]

如何使用数据表?

我尝试过这样的事情:

$('#example').dataTable( {
    "ajax": '/ajax/data.json'
    "columns": [
        "Name",
        "GroupID",
        "RecID"
    ]
} );

但是这无法加载数据。我认为可能是因为数据采用了错误的json格式,因为它需要像

这样的数据

预期的数据格式

{
    data: [
        1,
        "Group 1",
        5637144589
    ],
    [
        2,
        "Group 2",
        5637145326
    ]
}

所以我尝试了以下linq来更改数据:

 CacheHelper.Groups.Select(x => new string[] { x.GroupID, x.Name, x.RecID });

但这给了我一个数组数组,没有data位。

[
    ["1","Group 1",5637144589],
    ["2","Group 2",5637145326]
]

有没有办法用linq获取数据?

所以我想问题是

  • 有没有办法使用第一个json结果数据集并使其与js
  • 一起使用

如果不是

  • 有没有办法使用linq使数据集看起来像预期的数据

1 个答案:

答案 0 :(得分:1)

您需要使用以下初始化代码来匹配您的数据结构:

$('#example').dataTable( {
    "ajax": {
       "url": '/ajax/data.json',
       "dataSrc": ""
    },
    "columns": [
        { "data" : "Name" },
        { "data" : "GroupID" },
        { "data" : "RecID" }
    ]
});

来自dataSrc属性说明:

  

请注意,如果您的Ajax源只是返回一个数据数组   显示而不是对象,将此参数设置为空   字符串。