我想要做的是,如果组合框中的值发生更改,则修改数据表的sAjaxSource,然后我要调用数据表的fnDraw()函数
数据表是:
$("#example").dataTable({
"aoColumns": [
{ "sTitle": "Id" },
{ "sTitle": "Name" }],
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": '@Url.Action("FetchData", "Home")',
"sPaginationType": "full_numbers",
});
到目前为止,我有:
C#代码:
public JsonResult GetData(DataTableParameters param, int? SelectedId)
{
//return the results
}
并且用于更改值的javascript代码是:
$('#SelectedId').change(function () {
alert("Hi");
$("#example").dataTable(
{sAjaxSource:"/home/FetchData?SelectedId=1"}).fnDraw(true); ;
});
它达到了alert(“ Hi”)点,但没有重绘该表。我如何使它工作?
参考方案
说明
要将API用于数据表,您首先需要具有一个句柄。.dataTable
函数返回创建的数据表的句柄。
因此,这样做
var oTable = $("#example").dataTable({
...
});
oTable.fnDraw();
应该允许您访问和执行特定表的功能。
信息
有充分的理由,数据表不支持在初始化后更改设置。
//This does *NOT* work.
var oTable = $("#example").dataTable({
...
});
var oSettings = oTable.fnSettings();
oSettings.sAjaxSource = "some_url";
//Nothing will happen
oTable.Draw();
但是,您可以尝试使用fnServerData
函数在发送请求之前对其进行拦截,然后只要发生更改,就使用您自己的url更新表。
要么
您可以销毁该表并重新初始化它。
要了解有关fnServerData的更多信息,请click here并搜索“ fnServerData”。
解
我不确定这是否真的有效,我之前没有做过,但是应该有用。
var currentSource = "this_url";
var oTable = $('#example').dataTable( {
"bServerSide": true,
"bProcessing": true,
"aoColumns": [
{"sTitle": "id"},
{"sTitle": "name"}
],
"sPaginationType": "full_numbers",
"sAjaxSource": currentSource,
"fnServerData": function ( sSource, aoData, fnCallback ) {
$.ajax( {
"dataType": 'json',
"type": "POST",
"url": currentSource,
"data": aoData,
"success": fnCallback
});
}
});
$("#SelectedId").change(function)(){
currentSource = "new_url";
oTable.fnDraw(); //or fnReloadAjax()
});
替代解决方案
一种替代方法是销毁该表,然后使用新设置将其重新初始化。但是,这是一种非常无效的处理方式。
var initParams = {
"bServerSide": true,
"bProcessing": true,
"aoColumns": [
{"sTitle": "id"},
{"sTitle": "name"}
],
"sPaginationType": "full_numbers",
"sAjaxSource": "this_url",
};
var oTable = $('#example').dataTable(initParams);
$("#SelectedId").change(function)(){
oTable.fnDestroy();
initParams.sAjaxSource = "new_url";
oTable = $('#example').dataTable(initParams);
});
边注
当您拥有bServerSide = true
时,您必须照顾好一切,这也使一切变得复杂!
编码愉快! 🙂
jQuery Ajax加载仅适用于单个单词变量 - php在我的PHP文件中,我将一些变量从输入框传递到链接中,该链接通过jQuery的ajax load函数在其URL中使用该变量加载页面。整个系统运行良好,但仅适用于单字变量。每当涉及到空格时,我的Ajax通话都会中断。我假设这是一个编码问题,但是我也有一些疑问。基本上,它归结为我的PHP文件中的这一行代码,这导致了混乱。是否有可能找出格式是否正确,或者为什么在多…
如何从php中获取datatables jQuery插件的json数据 - php我是PHP的新手,正在尝试使用Datatables jQuery插件。我知道我必须从.php文件中获取数据,然后在数据表中使用它,但是我似乎无法通过ajax将其传递给数据表。我设法从数据库中获取数据,并对其进行json编码,但是后来我不知道如何在我的index.php文件中调用它,并在其中显示它。我究竟做错了什么?这是我的代码:HTML(已编辑): <…
jQuery DataTable TableTool在IE和Firefox中不起作用 - c#我在MVC4 ASP.NET Web应用程序中使用Jquery DataTable TableTool。导出到Excel和PDF可以与Chrome完美配合。但是不能在IE和FireFox中使用。我的代码如下 dom: 'T<"clear">lfrtip', tableTools: { "sSwfP…
如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…
如何在数据表中显示错误消息 - php我将Datatable用于我的候选人列表,并使用地区和政党名称搜索候选人。我为此使用ajax。问题是,当没有任何搜索结果时,我无法显示“未找到结果”。我该怎么做?码:单击搜索按钮时:$(document).on("click", "#submit_filter", function(){ $(this).attr(…