2016-06-05 1 views
4

J'ai un panneau ViewStock où je regarde stock dans un gridview de base de données et DataBind() il via le code. Permis radiomessagerie et créé et l'événement "OnPageIndexChanging" dans la balise gridview en html, Mis en œuvre le code défini ci-dessus et la pagination dans un événement comme suit:GridView ne pas afficher sur GridView_PageIndexChanging

HTML:

<asp:Panel ID="Panel_StockView" runat="server"> 

    <asp:GridView ID="GridView_Stock" AllowPaging="true" OnPageIndexChanging="GridView_PageIndexChanging" runat="server"></asp:GridView> 

</asp:Panel> 

code C#:

protected void LinkButton_Panel_ViewStock_Click(object sender, EventArgs e) 
{ 
    using(SqlConnection con = new SqlConnection(cs)) 
    { 
     //Sql command here 
     /sql adapter and filled datatable 
     sdaStockView.Fill(dtStockView); 
     GridView_Stock.DataSource = dtStockView; 
     GridView_Stock.DataBind(); 
    } 
} 

Et maintenant Paging Mis en œuvre

protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView_Stock.DataBind(); 
    GridView_Stock.PageIndex = e.NewPageIndex; 
} 

il ne fonctionne que partiellement. Il fait la pagination et fait les données correctement. Mais, le problème est quand je clique sur la page '2' le panneau vide comme dans l'image j'ai téléchargé See this Image, puis je clique sur le bouton de lien qui me redirige vers le panneau et ouvre la page '2' de la gridview avec données valides.

Comment résoudre ce problème?

+0

Maintenant, vous pouvez discuter à nouveau ;-) –

Répondre

1
  1. Extrait la logique qui lie le GridView aux données dans un nouveau method.You peut appeler BindData() par exemple:

    private void BindData() 
    { 
        using (SqlConnection con = new SqlConnection(cs)) 
        { 
         sdastockview.fill(dtstockview); 
         gridview_stock.datasource = dtstockview; 
         gridview_stock.databind(); 
        } 
    } 
    
  2. Appelez cette méthode à l'intérieur LinkButton_Panel_ViewStock_Click pour alimenter le GridView:

    protected void LinkButton_Panel_ViewStock_Click(object sender, EventArgs e) 
    { 
        this.BindData(); 
    } 
    
  3. Enfin, appelez-le à nouveau pour re-peupler le GridView pendant la radiomessagerie:

    protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
        GridView_Stock.PageIndex = e.NewPageIndex; 
        this.BindData(); 
    } 
    

Faites juste ces trois petits changements et cela fonctionnera. J'ai essayé ça de mon côté et ça marche très bien.

+0

Merci, ça a marché comme un charme! :) <3 Vous êtes l'homme mec! et je ne suis pas gay! lol: P – ARr0w

0

Enregistrez votre DataSet quelque part comme ViewState sur LinkButton_Panel_ViewStock_Click après le remplissage DataSet comme celui-ci

ViewState["ds"] = dtStockView

En PageIndexChanging écrire comme ce

protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    panel_ViewStock.visible = true; 
    GridView_Stock.PageIndex = e.NewPageIndex; 
    GridView_Stock.DataSource = ViewState["ds"] as DataSet 
    GridView_Stock.DataBind(); 
} 

espère que cela vous aidera

+0

il ne fonctionne pas bro, même question. Le scénario que j'ai dans mon esprit est qu'en cliquant sur l'événement pagechanging il recharge la page mais n'ouvre pas ce panneau du viewstock. il y a 3 panneaux. (1) Ajouter Stock (2) Mise à jour Stock (3) Voir Stock et ce que j'ai à la page charge sur la charge de la page "si {panel_updatestock.visible = false (IsPostBack!); Panel_ViewStock.visible = faux; } – ARr0w

+0

J'ai essayé la réponse modifiée aussi bien, mais cela n'a pas fonctionné. Mais encore merci pour le temps et l'aide <3. Apprécié^- ^. La logique de Denis Wessels a fonctionné! :) – ARr0w

0

Vous pouvez essayer d'utiliser:

protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)