fnDraw清除但不重新加载DataTable Datasrc MVC JSON Api

fnDraw清除但不重新加载DataTable Datasrc MVC JSON Api,json,asp.net-mvc,datatables,asp.net-ajax,Json,Asp.net Mvc,Datatables,Asp.net Ajax,我怎样才能让它每分钟左右在点击按钮或定时器时刷新一次?多谢各位 这就是我点击“刷新”时的样子。它清除数据,但不重新加载数据 这是查看代码 <h2>Fixtures</h2> <button id="Refresh" type="button">Refresh</button> <table id="fixtures" class="table table-bordered table-hover">

我怎样才能让它每分钟左右在点击按钮或定时器时刷新一次?多谢各位

这就是我点击“刷新”时的样子。它清除数据,但不重新加载数据

这是查看代码

<h2>Fixtures</h2>

    <button id="Refresh" type="button">Refresh</button>

    <table id="fixtures" class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>Fixture</th>
                <th>Market</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>

    @section scripts
{
        <script>
            $(document).ready(function () {
                $("#fixtures").DataTable({
                    ajax: {
                        url: "/api/fixtures",
                        dataSrc: ""
                    },
                    columns: [
                        {
                            data: "eventName",
                        },
                         {
                            data: "marketName"
                        }
                    ]
                });
                var oFixtureTable = $('#fixtures').dataTable();

                $("#Refresh").click(function (e) {
                    oFixtureTable.fnClearTable(0),
                    oFixtureTable.fnDraw();
                });
            });
        </script>
    }
固定装置
刷新
固定装置
市场
@节脚本
{
$(文档).ready(函数(){
$(“#装置”).数据表({
阿贾克斯:{
url:“/api/fixtures”,
dataSrc:“
},
栏目:[
{
数据:“eventName”,
},
{
数据:“marketName”
}
]
});
可伸缩变量=$('#fixtures').dataTable();
$(“#刷新”)。单击(函数(e){
oFixtureTable.fnClearTable(0),
oFixtureTable.fnDraw();
});
});
}
编辑:只需将DataTable更改为下面建议的变量赋值,即可导致DataTable完全不呈现(无论是否有任何其他刷新编码)


$(文档).ready(函数(){
//$(“#装置”).数据表({
var FixtureTable=$(“fixtures”).DataTable({
阿贾克斯:{
url:“/api/fixtures”,
dataSrc:“

},
首先,匈牙利符号(
fnFoo
oTable
aBar
)在从Datatables 1.9迁移到1.10的过程中已经过时。由于您有一些选项不使用该符号,我假设您使用的是1.10+

代码不能按您所希望的方式工作的原因是您首先清除了表(销毁所有行)然后重新绘制表格。请注意,您没有重新加载数据,只是再次绘制表格。虽然可能有1.9版本的重新加载,但我将为您提供1.10+解决方案,这可能是您应该使用的

要重新加载表,只需调用
TableName.ajax.reload()
。请参阅文档

另一个需要注意的细节是,您正在初始化datatable,然后将其分配给一个变量,但您可以而且应该在一个步骤中完成此操作。而不是:

//Make sure you use the capital D, lowercase creates a table, uppercase returns an API object
$("fixtures").DataTable({
    //.......
});
var oFixtureTable = $("fixtures").dataTable();
你应该:

//Might as well get rid of the 'o' (though you don't have to)
var FixtureTable = $("fixtures").DataTable({
    //.......
});
//Don't need the other assignment now.
然后将刷新方法的内部更改为:

FixtureTable.ajax.reload();

首先,匈牙利符号(
fnFoo
oTable
aBar
)在从Datatables 1.9迁移到Datatables 1.10时已经过时。由于您有一些选项不使用该符号,我假设您使用的是1.10+

代码不能按您所希望的方式工作的原因是您首先清除了表(销毁所有行)然后重新绘制表格。请注意,您没有重新加载数据,只是再次绘制表格。虽然可能有1.9版本的重新加载,但我将为您提供1.10+解决方案,这可能是您应该使用的

要重新加载表,只需调用
TableName.ajax.reload()
。请参阅文档

另一个需要注意的细节是,您正在初始化datatable,然后将其分配给一个变量,但您可以而且应该在一个步骤中完成此操作。而不是:

//Make sure you use the capital D, lowercase creates a table, uppercase returns an API object
$("fixtures").DataTable({
    //.......
});
var oFixtureTable = $("fixtures").dataTable();
你应该:

//Might as well get rid of the 'o' (though you don't have to)
var FixtureTable = $("fixtures").DataTable({
    //.......
});
//Don't need the other assignment now.
然后将刷新方法的内部更改为:

FixtureTable.ajax.reload();

如果您只需要一个刷新按钮,则可以更轻松地使用下载生成器中的选项。或者,如果您只想下载并将其作为单个文件包含,请使用例如

然后你可以使用:

var Fixturetable = $("#fixtures").DataTable({
        ajax: { 
           // ajax setup 
        },
        dom: 'Bfrtip',
        columns: [
            {
                // your columns
            }
        ],
        buttons: [
            {
                text: 'Refresh Table',
                action: function () {
                   Fixturetable.ajax.reload();
                }
            }
        ]
     });

另请参见示例获取想法(其用于“重新加载时保留选择”,但显示了如何使用按钮)-文档和。

如果您只需要一个刷新按钮,则使用下载生成器中的选项可能更容易。或者如果您只想下载并将其作为单个文件包含,请使用

然后你可以使用:

var Fixturetable = $("#fixtures").DataTable({
        ajax: { 
           // ajax setup 
        },
        dom: 'Bfrtip',
        columns: [
            {
                // your columns
            }
        ],
        buttons: [
            {
                text: 'Refresh Table',
                action: function () {
                   Fixturetable.ajax.reload();
                }
            }
        ]
     });

另请参见示例以获取想法(其用于“重新加载时保留所选内容”,但显示了如何使用按钮)-文档和。

通常,您应该将代码作为标记格式文本(缩进4空格)而不是屏幕截图发布。通常,您应该将代码作为标记格式文本(缩进4空格)发布而不是作为屏幕截图。谢谢你,Chris。请参阅上面的编辑将DataTable分配给变量,导致DataTable根本无法呈现。是的,版本1.10.11正在努力将列与变量方法集成。谢谢你,Chris。请参阅上面的编辑将DataTable分配给变量,导致DataTable根本无法呈现。是的,版本1.10.11Struggling使用变量方法集成列。我喜欢詹姆斯,工作得很好!再次感谢你(Y)我喜欢詹姆斯,工作得很好!再次感谢你(Y)