2017-02-09 77 views
1

当ı点击按钮,不工作refresh.If目的是要添加到数据库buton按钮按来到屏幕上。但没有更新。我用ajax创建了一个数据网格。我还在ViewModel中编写了刷新功能。可能是未更新的原因。我的数据是json。dxDataGrid - 如何刷新小部件

$.ajax({ 
 
     type: "GET", 
 
     url: "https://js.devexpress.com/Demos/WidgetsGallery/data/orderItems" 
 
     success: function (msg, result, status, xhr) { 
 
     var obj = jQuery.parseJSON(msg); 
 
     $("#gridContainer").dxDataGrid({ 
 
     dataSource: obj, 
 
     filterRow: { 
 
     visible: true}});}}); 
 
     var viewModel = { 
 
     refresh: function() {   
 
     var dataGrid = $('#gridContainer').dxDataGrid('instance'); 
 
     dataGrid.refresh();}}; 
 
return viewModel;
<div data-options="dxView : { name: 'dd',disableCache: true } " > 
 
    <div data-bind="dxCommand: { icon: 'refresh', id: 'save', onExecute: refresh }"></div> 
 
    <div data-options="dxContent : { targetPlaceholder: 'content' } " > 
 
     
 
     <div id="gridContainer"></div> 
 
     
 
      </div> 
 
</div>

+1

调用数据网格实例的刷新方法的目的是什么?你是否更改动态更改的数据源?你期望什么来调用刷新方法?如果你在ajax调用中初始化网格一次,刷新网格没有任何意义。 –

+0

@AlexSkorkin我可以问你一个问题吗? –

回答

0

亚历克斯提到的,你的Ajax发生的唯一的一个。所以,最好是使用DataSource configuration object加载数据:

var dataSource = { 
    load: function() { 
     var items = $.Deferred(); 
     $.ajax({ 
      type: "GET", 
      url: "https://js.devexpress.com/Demos/WidgetsGallery/data/orderItems", 
      success: function(result) { 
       items.resolve(result.items); 
      } 
     }); 

     return items.promise(); 
    } 
}; 

$("#gridContainer").dxDataGrid({ 
    dataSource: dataSource, 
    //... 
}); 

然后,如果你调用dxDataGrid的refresh()方法,数据源将被重新加载。

Demo

注意的是,如果您的数据源是动态变化的refresh方法是有用的。

+0

此方法不起作用。只有阿贾克斯的作品。我该怎么办? –

+0

>您对调用刷新方法有什么期望? – Sergey

+0

我会简单解释一下。当我按下该行时,我用屏幕上的对话框删除该行。但是线路停留在那里。但它不会立即落在屏幕上。我为此做了一个刷新按钮。出版社的屏幕上。 (这不是我的代码) –