2016-04-05 22 views
1

Bir sayfada birkaç jqgrids var..Şimdi herhangi birinde bir kayıt güncelleştirdikten sonra jqgrids yeniden yüklemek istiyorum. İşte Herhangi birinde yapılan değişikliklerden sonra sayfadaki tüm jqgrids yeniden yükleme

... ..

<div style="position: relative; top: 40px; width:50%"> 
     <table id="list"><tr><td></td></tr></table> 
     <div id="pager"></div> 
    </div> 

    <div style="position: relative; top: -250px; left:50%;"> 
     <table id="list1"><tr><td></td></tr></table> 
     <div id="pager1"></div> 
    </div> 

bedenim ve İşte ilk jqGrid işlevini gönderdikten sonra için yazısıdır

afterSubmit

: function (tepki, postdata)

     { 

          if (response.responseText === "OK") 
          { 
           alert("Update is succefully"); 

           alert(this); 
           $(this).jqGrid("setGridParam", {datatype: 'json'}); 
           return [true, "", ""]; 

           alert("#list1"); 
           $("#list1").jqGrid("setGridParam", {datatype: 'json'}); 
           return [true, "", ""]; 
           // $(this).trigger('reloadGrid'); 

          } 
          else { 
           alert("Update failed"); 
           return [true, "", ""]; 
          } 
         } 

Şimdi bu kodu kullanarak ilk jqgrid verileri güncelledikten sonra yeniden yüklenir ve bu jqgrid'de güncellenmiş verileri gösterir, Ancak # list1 olan ikinci jqgrid yeniden yüklenmez/yenilenmez. Acaba Ac mı Bunu düşünmek mi?

+0

(bu) o [nesne HtmlTableElement] ..however alert ("# list1") için – Saurabh507

cevap

1

Tam olarak ne demek istediğinizi belirsiz değil. free jqGrid çatal kullanırsanız, sunucuyu sunucudan yeniden yüklemek için önerilen yol, loadonce: true seçeneğine sahipse, .trigger("reloadGrid", {fromServer: true}) veya $("#list").trigger("reloadGrid", [{fromServer: true, current: true, page: 1}]); (bkz. the answer veya this one). Seni önce afterSubmit işlenmesini bitirmek için izin vermek setTimeout yukarıdaki kodu sarmak için tavsiye ardından afterSubmit gibi bazı callback'inde iç ızgaranın yeniden tetiklemek gerekiyorsa

$(".ui-jqgrid-btable").trigger("reloadGrid", {fromServer: true}); 

: Böylece aşağıdakileri yapabilirsiniz ızgaranın yüklenmesi: şimdi burada ben uyarı kullandığınızda

afterSubmit: function() { 
    setTimeout(function() { 
     $(".ui-jqgrid-btable").trigger("reloadGrid", {fromServer: true}); 
    }, 50); 
    return [true, "", ""]; 
} 
+0

evet ben özgür kullanıyorum [nesne object] gösterir gösterir jqGrid ve loadonce var: true ama bu $ ("# list1") tetikleyici ("reloadGrid", {fromServer: true}); çalışmıyor Bu sadece ikinci jqgrid yeniden yüklenemedi benim ilk ızgara bu kodu ile yeniden yüklendi ... $ (this) .jqGrid ("setGridParam", {datatype: 'json'}); dönüş [true, "", ""]; – Saurabh507

+0

@ Saurabh507: Ücretsiz jqGrid kullandığınızdan emin misiniz? Kullandığınız ücretsiz jqGrid sürümü ('jquery.jqgrid.src.js' ya da 'jquery.jqgrid.min.js' açmanız ve dosyaya başlangıçta dosyayı görmeniz gerekir: ** jqGrid 4.13.1 - free jqGrid **). Son sürümü GitHub'dan [burada] (https://github.com/free-jqgrid/jqGrid) veya CDN'den kullanmak için tavsiye ediyorum: [wiki makalesi] (https://github.com/free -jqgrid/jqGrid/wiki/Erişim-free-jqGrid-den-farklı-CDN'lerin). – Oleg

İlgili konular