2012-01-05 6 views
5

Ho una pagina in cui gli ospiti possono essere selezionati.L'impaginazione personalizzata di Gridview all'interno del controllo della procedura guidata non funziona correttamente in asp.net

Questa pagina contiene un pannello di aggiornamento, all'interno del pannello di aggiornamento v'è un controllo mago e nel controllo procedura guidata v'è una GridView (Pannello> Pannello di Aggiornamento -> controllo Wizard -> GridView)

Ora la paginazione non funziona bene, ho cercato su internet le risposte ma non ho trovato la risposta giusta. Io uso il paging personalizzato.

Quando si desidera modificare il numero di pagina (nella seconda o nell'ultima pagina) funziona correttamente. Ma quando voglio selezionare una riga o andare a un'altra pagina, il gridview non funziona correttamente. Quando seleziono una riga sulla seconda o sull'ultima pagina (le altre pagine non funzionano), il guest selezionato (elemento) è sempre uno della prima pagina. Quando voglio passare a un'altra pagina (dalla seconda o dall'ultima pagina) non funziona e rimane sulla pagina selezionata.

C'è un modo per risolvere questo problema?

parte del codice:

   <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

Si sta utilizzando un UpdatePanel condizionale ma non vedo alcun trigger. Li hai omessi o non hai registrato nessun trigger? Se è necessario lasciare UpdatePanel come condizionale, penso che sia necessario registrare l'evento PageIndexChanging come trigger. –

risposta

0

c'è un modo difficile da raggiungere questo obiettivo, è necessario manipolare il vostro sorgente di dati. ad esempio se si utilizza un datatable è necessario selezionare i primi dieci elementi di dt e collegarlo alla griglia, e quando si preme il pulsante successivo, ottenere i dieci elementi successivi di dt e collegarlo a gridview. questo renderà il tuo compito facile e otterrà più prestazioni per la tua pagina.

0

Posso vedere che this.GridView1.DataBind() è chiamato in GridView1_PageIndexChanging, ma dove è il currentPageIndex memorizzato e aggiornato con l'indice della pagina che si desidera navigare e quando nel processo sta accadendo?

0

Mi sembra che tu abbia un problema relativo allo stato di visualizzazione.

È necessario assicurarsi che tra Init e Load si abbia la sorgente della griglia impostata, da viewstate o da un nuovo bind-ing.