Question

EDIT: Maintenant de travail, voir ci-dessous

.

Salut à tous,

Avoir un léger problème avec mon application ASP.Net 3.5. Je suis en train de faire le programme pour récupérer ce numéro de page a été cliqué. J'utilise construit en fonction AllowPaging = « True » de ASP.Net. Il est jamais le même sans code, voici donc:

ASP.Net:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="Vertical" Width="960px" AllowSorting="True" 
            EnableSortingAndPagingCallbacks="True" AllowPaging="True" PageSize="25" >
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#999999" />
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        </asp:GridView>

C #:

var fillTable = from ft in db.IncidentDatas
                                where ft.pUserID == Convert.ToInt32(ClientList.SelectedValue.ToString())
                                select new
                                {
                                    Reference = ft.pRef.ToString(),
                                    Date = ft.pIncidentDateTime.Value.Date.ToShortDateString(),
                                    Time = ft.pIncidentDateTime.Value.TimeOfDay,
                                    Premesis = ft.pPremises.ToString(),
                                    Latitude = ft.pLat.ToString(),
                                    Longitude = ft.pLong.ToString()
                                };
                if (fillTable.Count() > 0)
                {
                    GridView1.DataSource = fillTable;
                    GridView1.DataBind();
                    var IncidentDetails = fillTable.ToList();
                    for (int i = 0; i < IncidentDetails.Count(); i++)
                    {
                        int pageno = GridView1.PageIndex;
                        int pagenostart = pageno * 25;
                        if (i >= pagenostart && i < (pagenostart + 25))
                        {
                            //Processing
                        }
                    }
                 }

Une idée pourquoi GridView1.PageIndex est toujours = 0? La chose est, le traitement fonctionne correctement pour l'affichage de la grille .... il sera toujours aller à la page de pagination correcte, mais il est toujours 0 lorsque je tente d'obtenir le numéro. Aide!

Était-ce utile?

La solution 2

Hmm ... never mind sur celui-ci. J'ai supprimé le GridView et a ajouté un autre, a ajouté l'événement pour PageIndexChanging, puis utilisé e.NewPageIndex. Pour une raison quelconque, il ne serait pas me permettre d'utiliser cet événement sur l'autre GridView. Bizarre.

Autres conseils

Avez-vous essayé d'accéder à GridView1.PageIndex avant d'appeler GridView1.DataBind? Il pourrait obtenir remis à zéro lorsque vous assigner une nouvelle source de données, puis associez au réseau.

Vérifiez votre dos de poste, vous chargez probablement la grille fraîche sur chaque chargement de page, donc quand vous la page, vous appelez probablement le code qui renseigne votre grille et remet à zéro l'index de page. Vous devez vous assurer de le charger que si elle est pas postback, si elle est un retour de poste, vous devrez récupérer les données et la pageIndex appropriée dans une zone de stockage comme ViewState etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top