2012-01-05 16 views
5

Mam stronę, na której można wybrać gości.Widok siatki niestandardowe stronicowanie wewnątrz kreatora kontroli nie działa poprawnie w asp.net

Ta strona zawiera panel aktualizacji, w panelu aktualizacji nie jest czarodziejem i kontrola w kontroli kreatora jest GridView (Panel> Update Panel -> Kontrola Wizard -> GridView)

Teraz stronicowania nie działa dobrze, szukałem odpowiedzi w Internecie, ale nie znalazłem właściwej odpowiedzi. Używam niestandardowego stronicowania.

Kiedy chcę zmienić numer strony (na drugą lub ostatnią stronę), działa dobrze. Ale gdy chcę wybrać wiersz lub przejść do innej strony, widok siatki nie działa poprawnie. Kiedy wybieram wiersz na drugiej lub ostatniej stronie (inne strony nie działają), wybrany gość (element) jest zawsze jedną z pierwszych stron. Kiedy chcę zmienić na inną stronę (z drugiej lub ostatniej strony), to nie działa i pozostaje na wybranej stronie.

Czy istnieje sposób rozwiązania tego problemu?

część kodu:

   <asp:Panel ID="PnlRe" Style="display: none; ... > 
    <asp:UpdatePanel ID="UpdtPnlDetail" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
     ... 
     <asp:Wizard ID="wzd" runat="server" ... > 
      ... 
      <asp:WizardStep ID="WizardStep3" runat="server" Title="Naam"> 
         ... 
          <asp:Gridview ID="Gridview1" runat="server" AutoGenerateColumns="False" 
           DataKeyNames="GastID,Versie" DataSourceID="odsGasten" EmptyDataText="...." 
           OnRowCommand="Gridview1_RowCommand" OnPageIndexChanging="Gridview1_PageIndexChanging" 
           OnPageSizeChanging="Gridview1_PageSizeChanging" OnSearching="Gridview1_Searching" 
           OnSorting="Gridview1_Sorting" OnRowDataBound="Gridview1_RowDataBound" 
           CausesValidation="False" meta:resourcekey="..." PagerType="Custom" 
           ShowFilter="True" ShowInsertRecord="True" ShowPageSizer="True" UseSubmitBehaviour="False"> 
           <Columns> 
            <asp:TemplateField ShowHeader="False" meta:resourcekey="..."> 
             <ItemTemplate> 
              <asp:ImageButton runat="server" CommandName="Select" CausesValidation="False" SkinID="uprowbutton" 
               ToolTip="..." ID="ImgBtnSelect" meta:resourcekey="..."> 
              </asp:ImageButton> 
             </ItemTemplate> 
            </asp:TemplateField> 
            ... Boundfields ... 
           </Columns> 
          </asp:Gridview> 
         ... 
        </asp:WizardStep> 
        ... 
    </asp:Wizard> 
    </ContentTemplate> 
</asp:UpdatePanel> 

protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    this.odsGasten.FilterExpression = searchText; 
    this.Gridview1.DataBind(); 
    this.UpdtPnlDetail.Update(); 
} 
+2

Używasz warunkowego UpdatePanel, ale nie widzę żadnych wyzwalaczy. Pominąłeś je lub nie masz zarejestrowanych wyzwalaczy? Jeśli chcesz opuścić UpdatePanel jako warunkowe, uważam, że musisz zarejestrować zdarzenie PageIndexChanging jako wyzwalacz. –

Odpowiedz

0

jest trudna droga do osiągnięcia tego celu, trzeba manipulować źródła danych. na przykład, jeśli używasz datatable, musisz wybrać pierwsze dziesięć elementów dt i powiązać go z siatką, a po kliknięciu następnego przycisku uzyskać następne dziesięć elementów dt i powiązać go z gridview. to ułatwi ci zadanie i zwiększy wydajność twojej strony.

0

Widzę, że this.GridView1.DataBind() jest wywoływana w GridView1_PageIndexChanging, ale gdzie jest currentPageIndex przechowywane i aktualizowane z indeksem strony, do którego chcesz nawigować i kiedy jest w trakcie?

0

Brzmi tak, jakbyś miał problem z widokiem.

Musisz upewnić się, że pomiędzy Init i Load masz ustawiony zestaw siatki, albo z poziomu wyświetlania stanu, albo z nowego wiązania.