2012-10-22 22 views
5

Ajax Yükleniyor Bir web ızgarasını kolayca bağlayabilir ve varsayılan ayarları kullanarak ajax ekleyebilirim. Ancak, anlamaya çalıştığım bir şey, ızgara ajax ile sıralanırken veya sıralandığında bir yükleme göstergesinin nasıl ekleneceğidir.Ajax Sıralamayı gösterirken veya sıralarken ASP.NET MVC Webgrid

Ajax yükleme göstergesini kapatmak için harika bir geri çağırma işlevi vardır ancak bunu nasıl kolayca açabilirim?

Webgrid'im için şu andaki kod aşağıdadır.

@{ 
    var grid = new WebGrid(rowsPerPage: Model.CountPerPage, ajaxUpdateContainerId: "GridArea"); 
    grid.Bind(Model.Users, 
       autoSortAndPage: false, 
       rowCount: Model.TotalCount 
      ); 
    grid.Pager(WebGridPagerModes.All); 
} 
<div id="GridArea"> 
    @grid.GetHtml(htmlAttributes: new {id ="UserGrid"}, 
     columns: new [] { 
     grid.Column("ID", canSort: false), 
     grid.Column("FirstName"), 
     grid.Column("LastName"), 
     grid.Column("Email"), 
     grid.Column("FullName", canSort: false) 
     } 
    ) 
</div> 

Aşağıdakileri kullanmayı denedim, ancak bunların hiçbiri işe yaramadı.

<script> 
    $(function() { 
     $("#UserGrid").live("ajaxStart", function() { 
      alert("start"); 
     }); 
    }); 
</script> 

Bu ilk kez çalışır ancak ızgara ilk ajax yenilemesi yaptıktan sonra çalışmaz.

<script> 
    $(function() { 
     $('#UserGrid').ajaxStart(function() { 
      alert("start"); 
     }); 
    }); 
</script> 

cevap

8

Çalışması gerekir.

$(document).ajaxStart(function(){ 
    //Show your progressbar here 
}).ajaxStop(function(){ 
    //Hide your progressbar here 
}); 

Kişisel İkinci yaklaşım ilk ajax yanıtı sonra çünkü çalışmıyor, DOM yeniden oluşturulur ve .ajaxStart bile bağlayıcı kaybolur. Küresel belge nesnesiyle bağladım ve her zaman orada olacak.

+0

Sayfanın diğer ajax tarafından yönlendirilen kısımlarını istiyorsanız ve aramayı doğrudan Webgrid'den ayırt etmem gerekirse bunu nasıl başarabilirim? –

+2

Web kılavuzunun DOM'si ajax çağrısı ile değiştirildiği zaman webgrid'in ajax olay işleyicisini yeniden adlandırmanız gerekir. Yani, ne yaparsanız yapın, hepsini yeniden isimlendirebileceğiniz global ajax işleyicisine ihtiyacınız var. Aramayı ayırt etmek isterseniz, ajax çağrısından kaynaklanan kontrolü takip etmek için gizli alanları kullanabilirsiniz. – Tariqulazam

1

Evet, yukarıdaki cevap size yardımcı olacaktır. Temel olarak, istemciden sunucuya yapılan herhangi bir ajax isteğine dikkat edecek bir Jquery API'si vardır. Yani herhangi bir ajax işlemi yaptığınızda, işlevi tetikler. Özel css/resimlerinizi veya ajax işleminde gösterge olarak çağırabileceğiniz bazı işlevleri ekleyebilirsiniz.

+0

Sayfanın diğer ajax tahrikli bölümlerini kullanmak istiyorsam ve bunu doğrudan Webgrid'den ayırmam gerekirse bunu nasıl başarabilirim? –