2012-01-05 24 views
5

Tengo una página donde se pueden seleccionar invitados.La paginación personalizada Gridview dentro del control del asistente no funciona correctamente en asp.net

Esta página contiene un panel de actualización, dentro del panel de actualización hay un control de asistente y en el control asistente hay un gridview (Panel> Actualización del panel -> control Wizard -> gridview)

Ahora la paginación no funciona bien, busqué en Internet respuestas pero no encontré la respuesta correcta. Yo uso paginación personalizada.

Cuando quiero cambiar el número de página (a la segunda o última página) funciona bien. Pero cuando quiero seleccionar una fila o ir a otra página, la vista de cuadrícula no funciona correctamente. Cuando selecciono una fila en la segunda o última página (las otras páginas no funcionan), el invitado seleccionado (elemento) siempre es uno de la primera página. Cuando quiero cambiar a otra página (desde la segunda o la última página), no funciona y permanece en la página seleccionada.

¿Hay alguna manera de resolver este problema?

parte del código:

   <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

Está utilizando un Panel de actualización condicional, pero no veo ningún activador. ¿Los omitió o no tiene triggers registrados? Si necesita dejar UpdatePanel como condicional, creo que necesita registrar el evento PageIndexChanging como desencadenante. –

Respuesta

0

hay una manera difícil de lograr esto, hay que manipular el origen de datos. por ejemplo, si está utilizando una tabla de datos, debe seleccionar los primeros diez elementos de dt y vincularlos a la cuadrícula, y cuando se haga clic en el siguiente botón, obtenga los siguientes diez elementos de dt y agréguelos a gridview. esto facilitará su tarea y obtendrá más rendimiento para su página.

0

Veo que this.GridView1.DataBind() se llama en GridView1_PageIndexChanging, pero ¿dónde se almacena y actualiza el CurrentPageIndex con el índice de página que desea navegar y en qué momento del proceso está sucediendo?

0

Me parece que tiene un problema de viewstate.

Debe asegurarse de que entre Init y Load tenga el conjunto de origen de la cuadrícula, ya sea desde viewstate o desde un nuevo enlace.

Cuestiones relacionadas