2017-02-09 9 views
1

ボタンをクリックすると、更新されません。データベースに追加する場合はボタンを押して画面に移動します。しかし更新していません。私は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

このメソッドは機能しません。 Ajaxだけが動作します。私はどうしますか? –

+0

>リフレッシュメソッドを呼び出すと何が期待されますか? – Sergey

+0

私は簡単に説明します。行を押すと、画面上のダイアログでその行を削除します。しかし、その行はそこにとどまります。しかし、それはすぐに画面に落ちない。私はこのためにリフレッシュボタンを作った。プレスの画面に進みます。 (これは私のコードではありません) –

関連する問題