2010-05-05 6 views
0

J'ai un DataGrid dans un USerControl. D'une certaine façon le travail ne marche pas d'appel, la recherche de personnes a la bonne quantité de pages, mais en cliquant sur les chiffres ne fonctionne pas ... il reste à la page 1. Voici ma grille:DataGrid dans UserControl

<asp:DataGrid ID="DG_Grid" runat="server" AllowPaging="True" PageSize="10" EnableViewState="True" 
      AllowSorting="False" DataKeyField="DUEDATE" OnItemDataBound="DG_Grid_ItemDataBound" OnItemCommand="DG_Grid_ItemCommand"> 

Idées anyone?

Répondre

0

Avez-vous géré l'événement PageIndexChanged? Voir here pour plus de détails.

+0

Oui, je me suis occupé de lui ... – grady

0

Est-ce que la base de données Usercontrols est liée dans la page ou dans la commande Usercontrol elle-même? Je pense que vous les liez dans la page et vous les triez dans la page. Vous devez donc lever l'événement PageIndexChanged à partir de UserControl et le gérer dans la page.

Cet exemple est avec GridView mais pour DataGrid c'est pareil.

Dans le UserControl définir un événement que vous gérez dans votre:

Public Event GridPageChanged(ByVal grid As GridView) 

    Private Sub GridView1_PageIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.PageIndexChanged 
     RaiseEvent GridPageChanged(Me.GridView1) 
    End Sub 

Vous pouvez maintenant prendre en GridPageChanged du usercontrol votre page et faire le tri.

+0

Son lié dans le UserControl lui-même. – grady

+0

Vous faites seulement un DataBind sur la première fois (! Page.IsPostBack) ?! Parce que lorsque vous databind la grille l'événement pageindexchanged ne se déclenchera pas. –

+0

Ouais, je ne lie que la source de données if (! Ispostbackback). D'un autre côté, le lier chaque fois ne sera pas utile non plus. – grady

0

Utilisez comme ceci:

private void FillGrid(int aPageNumber) 
    { 
     //Insert you code here 


     DG_Grid.DataSource = _ds.Tables[0].DefaultView; 
     DG_Grid.PageIndex = aPageNumber; 
     DG_Grid.DataBind(); 
    } 

Et après cet appel cet événement de la grille

protected void DG_Grid_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     FillGrid(e.NewPageIndex); 
    } 

Sur appel de charge:

FillGrid(0);