【问题标题】:JQuery DataTable prevent server calls in client modeJQuery DataTable 防止客户端模式下的服务器调用
【发布时间】:2016-02-18 15:07:03
【问题描述】:

我正在尝试在客户端模式下使用 DataTable。我的意思是我想在客户端(网络浏览器)中完成所有数据加载、行添加和删除过程。

我正在使用以下代码来初始化 DataTable,它会从复杂的类对象 (PriceItems) 中正确加载表行。但是在初始化过程中,它会向服务器发出 http post 请求。 为什么? 我怎样才能防止这种情况发生?

var pricesTable = $('#pricesTable').DataTable({
     data: viewModel.product.PriceItems,
     columns: [{
         data: 'Id',
         visible: false
     }, {
         data: 'Name'
     }, {
         data: 'Value'
     }, {
         data: 'CurrencySymbol'
     }, {
         data: 'UnitName'
     }],

     sort: false,
     processing: false,
     serverSide: false,
     deferLoading: 0,
     info: false,
     filter: false,
     lengthChange: false,

     fnInitComplete: function (oSettings, json) {
         $('#pricesTable tbody tr:eq(0)').click();
     }

 });

EDIT-1: 如果我使用 (serverSide: true) DataTable 停止调用 mvc 控制器!
EDIT-2: 在服务器端填充的数据模型使用下面的代码。

var viewModel = new ProductFormViewModel(@Html.Raw(Json.Encode(Model)));

【问题讨论】:

  • viewModel.product.PriceItems 获取数据...
  • 请看EDIT 2
  • 当您将“模型”传递给视图时,它实际上是否已被填充?只是想知道您的查询是否使用延迟执行并尝试在数据表初始化时枚举结果集。
  • 模型在控制器的编辑([HttpGet])操作中填充,控制器将其传递给视图。部分视图是 $(document).ready(function () { var viewModel = new ProductFormViewModel(@Html.Raw(Json.Encode(Model))); }

标签: jquery datatables


【解决方案1】:

从 datatable 的初始化中删除 data 属性,因为它向该 url 发送请求,请尝试以下代码。

var pricesTable = $('#pricesTable').DataTable({
     columns: [{
         data: 'Id',
         visible: false
     }, {
         data: 'Name'
     }, {
         data: 'Value'
     }, {
         data: 'CurrencySymbol'
     }, {
         data: 'UnitName'
     }],

     sort: false,
     processing: false,
     serverSide: false,
     deferLoading: 0,
     info: false,
     filter: false,
     lengthChange: false,

     fnInitComplete: function (oSettings, json) {
         $('#pricesTable tbody tr:eq(0)').click();
     }

 });

【讨论】:

  • 如何填充数据表?
  • 我尝试从初始化代码中删除数据属性,但没有任何改变。它持续调用控制器获取操作。
  • 那请再检查一下控制器请求是从哪里发起的?
  • 如果我将 serverSide 属性设置为 true(在我的情况下应该为 false),数据表会按预期工作,并且永远不会调用任何 http post 操作方法。但这次它调用控制器在客户端添加行:) 真的很有趣......
  • 很遗憾我还没有解决方案
猜你喜欢
  • 1970-01-01
  • 2012-08-01
  • 2016-03-03
  • 2014-03-06
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多