2016-10-25 7 views
0

私はケンドグリッドを持っています。さて、私は、各行の最後に表示されるクライアントテンプレートにカスタムボタンを持っています。この行を変更すると、変更がdbで行われますが、グリッドには反映されません。ケンドグリッドがリフレッシュしない

ボタンの2回目をクリックすると、一番奇妙なことはすべて動作します。ここ

コードです:

$('#custom-generic-modal.modal-content').off('click', '#btnSave').on('click', '#btnSave', function() { 

var permissions = $('#divNav .k-state-selected').attr('data-permissionid'); 
var currentPage = grid.dataSource.page(); 

$.ajax({ 
    //global: false, 
    type: 'GET', 
    url: 'Allergy/AllergiesTab?permissions=' + permissions, 
    async: 'false', 
    success: function (page) { 
     $("#PageDiv").html(page); 
     console.log('success') 
    }, 
    complete: function() { 
     $.get("Page/PageTab?permissions=" + permissions, function(page) { 
      $("#PageDiv").html(page); 
      helpers.notify("Retraction successful.", "success"); 
     }).done(function() { 
      var grid = $("#Grid").data("kendoGrid"); 
      grid.dataSource.page(currentPage); 
      grid.refresh(); 
      console.log('complete') 
     }); 
    } 
}); 

})。ここで

は私のグリッドです:

@(Html.Kendo().Grid(Model.grid) 
      .Name("Grid") 
      .ClientDetailTemplateId("template") 
      .HtmlAttributes(new { style = "height: 450px;" }) 
      .Columns(c => 
       { 
        c.Bound(x => x.IsAllergy).Title("").Width("13%").ClientTemplate(@"<span class='#if(IsRetracted){#strike-through#}#'>#if (IsAllergy){#<span><b> Allergy </b></span>#}# #if (!IsAllergy){#<span><b> Sensitivity </b></span>#}# </span>"); 
        c.Bound(x => x.AllergyDescription).Title("Allergen/Sensitivity").Width("24%").ClientTemplate(@"<span class='#if(IsRetracted){#strike-through#}#'>#if (AllergyDescription != null){#<span><b> #= AllergyDescription # </b></span>#}# #if (AllergyDescription == null){#<span><b> N/A </b></span>#}# </span>"); 
        //AllergyType(Food,drug,ev) 
        c.Bound(x => x.AllergySeverityDescription).Title("Severity").Width("13%").ClientTemplate(@"<span class='#if(IsRetracted){#strike-through#}#'>#if (AllergySeverityDescription != null){#<span> #= AllergySeverityDescription # </span>#}# #if (AllergySeverityDescription == ''){#<span> N/A </span>#}# </span>"); 
        c.Bound(x => x.AllergyReactionDescription).Title("Reaction").Width("13%").ClientTemplate(@"<span class='#if(IsRetracted){#strike-through#}#'>#if (AllergyReactionDescription != null){#<span> #= AllergyReactionDescription # </span>#}# #if (AllergyReactionDescription == ''){#<span> N/A </span>#}# </span>"); 
        c.Bound(x => x.TreatmentComments).Title("Treatment Comments").Width("24%").ClientTemplate(@"<span class='#if(IsRetracted){#strike-through#}#'>#if (TreatmentComments != null){#<span> #= TreatmentComments # </span>#}# #if (TreatmentComments == null){#<span> N/A </span>#}# </span>"); 
        c.Template(@<text></text>) 
         //.ClientTemplate(@" #if(!IsActive) {#<a class='notes-btn'><span class='glyphicon glyphicon-pencil'></span></a> #if(!IsRetracted) {#<a class='notes-btn' onclick='retractAllergyInit(#= PersonAllergyId #)'><span class='glyphicon glyphicon-minus-sign'></span></a>#}}#") 
        .ClientTemplate(@" #if(!IsActive) {#<a class='notes-btn'><span class='glyphicon glyphicon-pencil'></span></a> #if(!IsRetracted) {#<a class='notes-btn modal-link' href='Retract/Retract?typeId=#= PersonAllergyId #&retractType=5' data-ajax='true' data-ajax-method='GET' data-ajax-mode='replace'><span class='glyphicon glyphicon-minus-sign'></span></a>#}}#") 
        .Title("Actions").Width("12%"); 
       } 
      ) 
      .Pageable(pager => pager.Messages(m => m.Empty("No Results Found"))) 
      .DataSource(dataSource => dataSource 
             .Ajax() 
             .PageSize(10) 
             .ServerOperation(false)) 
      ) 

答えて

1

grid.refresh() "現在のデータ項目を使用して、すべてのテーブルの行を描画します。" http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#methods-refresh

dataSourceをサーバーから再読み込みさせるコードはありません。

常にdataSource.transport.readで構成されたサーバーのアクションを再ヒットであろう、代わりに

grid.dataSource.read(); 

やってみてください。

詳細を入力するには、グリッド設定コードを入力する必要があります。

1

読み取りを使用すると、グリッドの背後にあるサーバーと更新データソースからのデータが要求されます。 readメソッドを使用してUIに変更はありません。リフレッシュは、グリッド内のアイテムを現在のデータソースから再レンダリングします。両方ともグリッドの変更を確認する必要があります。

関連する問題