2011-01-26 25 views
5

Chociaż pytania jakoś do tego podobne były zadawane wiele razy, ale pytanie pozostaje nierozwiązane. Oto pytanie: Mam GridView, który jest zawarty w kontenerze z zakładkami AJAX, który sam znajduje się wewnątrz UpdatePanel. Gridview działa doskonale i odpowiadające mu metody są uruchamiane dokładnie, ale kiedy włączam paging (np.) Po kliknięciu na stronie 2, ukrywa się GridView. tutaj jest mój PageIndexChanging() metoda:ASP.net Gridview Paging nie działa wewnątrz UpdatePanel

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex;   
    GridView1.DataBind(); 
    UpdatePanel2.Update();   
} 

Dlaczego stronicowania powoduje GridView przestać działać poprawnie? Co mogę zrobić?

+0

http://forums.asp.net/t/1091963.aspx - Możliwe rozwiązanie. –

Odpowiedz

6

Rozwiązaniem jest, że należy uzupełnić zbiór danych, który jest używany do wypełnienia GridView każdym razem, gdy wskaźnik strona jest zmieniany. W ten sposób można zagwarantować, że w każdym osobnym odświeżeniu, które zostało wywołane przez numer strony widoku siatki, wyniki zostaną wypełnione.

3

Dalsze badania:

http://msdn.microsoft.com/en-us/library/cc295545.aspx

Kontrole, które nie są zgodne z UpdatePanel kontroluje

następujące formanty ASP.NET nie są kompatybilne z aktualizacjami częściowy stronie, a zatem nie został zaprojektowany do pracy w kontrolce UpdatePanel:

  • GridView i DetailsWyświetl elementy sterujące, gdy ich właściwość EnableSortingAndPagingCallbacks ma wartość true. Wartością domyślną jest fałsz.
3

Po prostu wypróbowałem powyższy kod. Miałem ten sam problem i teraz działa dobrze.

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex;   
    GridView1.DataBind(); 
    // UpdatePanel2.Update(); <-- Remove this line from your code. 
} 

Mam GridView wewnątrz panelu aktualizacji. Czy zapisałeś także swoje wydarzenie PageIndexChanging w swoim pliku .aspx?

Mam nadzieję, że to pomoże.

-1

Aby to zrobić, należy ponownie ustawić źródło danych w zdarzeniu zmiany indeksu strony. Wydajność będzie niższa, ale w ten sposób możesz ją uruchomić.

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.DataSource = ;//Set again the datasource 
    GridView1.PageIndex = e.NewPageIndex; 
    GridView1.DataBind(); 
    UpdatePanel2.Update(); 
} 
+0

@Farshid już odpowiedział na to. – AsifAli72090

Powiązane problemy