我正在使用 JQuery DataTables插件来处理我的表,最近我切换到服务器端分页和过滤。特别是,我有一个返回数据以填充客户表的 Web 方法:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetCustomers(string jsonAOData, int mode)
{
// ...
}
在我的页面中,我使用此代码通过 AJAX 调用检索数据。
var grid = $('#grid').dataTable({
bJQueryUI: true,
bLengthChange: false,
iDisplayLength: listItemsPerPage,
bDestroy: true,
"bProcessing": true,
"bSort": true,
"sPaginationType": "full_numbers",
"bServerSide": true,
"sAjaxSource": "/wsData/GetData.asmx/GetCustomers",
"fnServerData": function (sSource, aoData, fnCallback) {
var jsonAOData = JSON.stringify(aoData);
$.ajax({
//dataType: 'json',
contentType: "application/json; charset=utf-8",
type: "POST",
url: sSource,
data: "{jsonAOData : '" + jsonAOData + "', mode:'0'}",
success: function (msg) {
fnCallback(JSON.parse(msg.d));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.responseText);
}
});
},
"aoColumnDefs": [
// my columns structure
]
});
如您所见,我向 web 方法传递了两个参数:jsonAOData
,包含用于分页和过滤的所有信息,以及mode
,它定义了如何从 DB 中获取数据。它工作得很好,但现在我需要重新加载表中的数据,将不同的值传递给我的 web 方法mode
。
阅读我发现函数的文档fnReloadAjax()
可以帮助我,但我找不到将它应用于我的问题的正确方法。
我试过这样:
grid.fnReloadAjax("/wsData/GetData.asmx/GetCustomers?mode=1");
但它不起作用。你能帮助我吗?我在哪里做错了?
如何将新参数传递给我的网络方法?