我hava数据表在客户端返回25条记录(100条记录中)。除了那25行,我想要一个数组或任何包含所有100条记录的第一列的数据结构
我的代码:
var oTable = $('#tblClipart').dataTable({
'bStateSave': true,
'bProcessing': true,
'bServerSide': true,
'aaSorting': [[6, 'desc']],
'bFilter': false,
'iDisplayLength': 25,
'sPaginationType': "bootstrap",
'sDom': 'Rlfrtlip',
'aoColumns': [
// Some Code
],
'sAjaxSource': '/Handlers/Manage.ashx' // Handler page for providing data
});
处理程序代码
List<ClipartEntity> clipArtEntityList = null;
clipArtEntityList = //Get Data From Server - All 100 Records
var result = new
{
iTotalRecords = totalRecords,
iTotalDisplayRecords = totalRecords, //Display only first 25
/* ClipartIds = clipArtEntityList.Select(m => m.ClipartID ), Can add this line to retrieve just one column in array list */
aaData = clipArtEntityList
.Select(p => new[] {
Convert.ToString("C"+p.ClipartID),
p.ClipartName + Convert.ToString(p.Sequence),
Convert.ToString(p.CategoryName),
Convert.ToString(p.ClipartID),
p.ClipartNameForSort
})
.Skip(iDisplayStart)
.Take(iDisplayLength)
};
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Serialize(result);
context.Response.ContentType = "application/json";
context.Response.Write(json);
我可以将ClipartIds = clipArtEntityList.Select(m => m.ClipartID ),
添加到var result
变量,以array
格式获取所有100条记录的第一列数据
但问题是如何在客户端检索它?
P.S。我不想再进行另一个ajax调用来检索一个列数据,因为我之前的ajax调用包含该数据。
答案 0 :(得分:1)
您只需要使用fnServerData回调..您已经创建了自定义ClipartIds
返回参数,因此要在客户端使用它,只需将回调添加到数据表初始化:< / p>
var oTable = $('#tblClipart').dataTable({
'fnServerData': function ( sSource, aoData, fnCallback ) {
$.getJSON(sSource, aoData, function (json) {
// do something with the column of Ids
var clipartIds = json.ClipartIds;
fnCallback(json);
});
},
'bStateSave': true,
...