2016-10-25 3 views
0

서버에서 데이터를 가져 와서 채우는 kendogrid가 있습니다. 그럼 각 행의 끝에 표시되는 customtemplate에 사용자 정의 단추가 있습니다. 이 행을 수정하면 db에서 변경이 이루어 지지만 표에 반영되지는 않습니다.Kendogrid가 새로 고침되지 않습니다.

내가 가장 이상한 것은 두 번째 버튼을 클릭하면 작동합니다. 여기

코드입니다 :

$('#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에는 변경 사항이 없습니다. 새로 고침은 현재 데이터 소스에서 그리드의 항목을 다시 렌더링합니다. 둘 다 그리드에서 변경 사항을 확인해야합니다.

관련 문제