我是 Datatables 服务器端处理的新手,我没有找到适合使用 wcf 服务进行服务器端处理的示例或示例代码。
我正在尝试使用连接到 WCF 服务的 jQuery Datatables (datatables.net) 服务器端处理来获取数据。
我已经使用 iDisplayStart 和 iDisplayLength 实现了分页(我将其作为 wcf 方法的参数)来构造 sql 查询(在 wcf 方法中)以限制不显示的记录。
现在,问题是如何在 wcf 方法中实现搜索和排序。为此,我需要单击哪一列进行排序以及显示哪些列来构造 sql WHERE 子句。
在这里,我的做法是在前端根据数据表构造sql查询。它是使用 wcf 完成数据表服务器端处理的方法吗?
如果问题的任何部分不清楚,请发表评论。
以下是前端代码
剧本
$(document).ready(function () {
$('#example').dataTable({
"aoColumns": [
{ "sTitle": "#", "sName": "ID", "mData": "ID"},
{ "sTitle": "PIN Number", "sName": "PIN", "mData": "PIN" },
{ "sTitle": "Amount (Rs.)", "sName": "Amount", "mData": "Amount" }
],
"sPaginationType": "full_numbers",
"bJQueryUI": true,
"bSort": true,
"bProcessing": true,
"bServerSide": true,
"bAutoWidth": true,
"sAjaxSource": "http://localhost:61216/datatabletestservice.svc/gettable",
"fnServerData": function (sSource, aoData, fnCallback) {
$.ajax({
"datatType": 'json',
"contentType": 'application/json',
"url": sSource,
"data": aoData,
"success": function (msg) {
var json = $.parseJSON(msg);
fnCallback(json);
}
})
},
});
});
</script>
身体
<body>
<form id="form1" runat="server">
<div>
<table id="example" width="100%">
<thead>
</thead>
<tbody>
</tbody>
</table>
</div>
</form>
</body>
WCF 方法(后端)
public string GetTable(int iDisplayStart, int iDisplayLength, string sSearch, bool bEscapeRegex, int iColumns, int iSortingCols, int iSortCol_0, string sSortDir_0, int sEcho)
{
string query;
DataTable dt;
DateTime t1 = DateTime.Now;
string connectionstring = "server=my_server;database=my_db;uid=myuser;password=mypassword;";
query = "SELECT SQL_CALC_FOUND_ROWS * FROM voucher LIMIT " + iDisplayStart + ", " + iDisplayLength;
dt = MySqlHelper.ExecuteDatatable(connectionstring, query);
int totalRows = Convert.ToInt32(MySqlHelper.ExecuteScalar(connectionstring, "SELECT FOUND_ROWS()"));
string jsonString = JsonUtils.GetPlainJsonDataByDataTable(dt);
var result = JsonUtils.GetObjectFromJson<dynamic>(jsonString);
string test = "{" +
"\"sEcho\": \"" + sEcho + "\", " +
"\"iTotalRecords\": \"" + totalRows + "\", " +
"\"iTotalDisplayRecords\": \"" + totalRows + "\", " +
"\"aaData\": " + result +
"}";
return test;
}