2009-09-24 10 views
0

Dans mon gridview asp.net, je place une colonne de template qui affiche une image.Asp.net gridview template colonne

À l'intérieur de la colonne de modèle, j'ai ajouté un contrôle d'image, et il affiche avec succès les images de la base de données. J'utilise aussi la pagination.

La pagination se produit également mais quand je fais des images de pagination ne viennent pas dans le gridview dans le bon ordre par exemple les trois premières pages elle-même suppose a.jpg, b.jpg, c.jpg et quand je clique sur le numéro de page répète la même image au lieu des images restantes, j'utilise if(!ispostback) dans l'événement de chargement aussi. Sil te plait aide moi.

mon code en cas de chargement de la page est:

da = new SqlDataAdapter ("select * from t1", con); ds = nouveau DataSet(); da.Fill (ds); path = Server.MapPath (@ "~ \ images"); if (! IsPostBack) { GridView1.DataSource = ds; GridView1.DataBind();

ASCIIEncoding asc = new ASCIIEncoding(); 
    int j = GridView1.Rows.Count; 

    for (int i = 0; i < j; i++) 
    { 

     GridViewRow r=GridView1.Rows[i]; 
     b = (byte[])ds.Tables[0].Rows[i]["photo"]; 
     string name = asc.GetString(b); 
     Image img = (Image)r.FindControl("Image1"); 
     img.ImageUrl = path + @"\" + name; 

    } 
    } 

et mon code dans l'événement d'appel est

GridView1.PageIndex = e.NewPageIndex; GridView1.DataSource = ds; GridView1.DataBind(); ASCIIEncoding asc = new ASCIIEncoding(); int j = GridView1.Rows.Count;

for (int i = 0; i < j; i++) 
    { 

     GridViewRow r=GridView1.Rows[i]; 
     b = (byte[])ds.Tables[0].Rows[i]["photo"]; 
     string name = asc.GetString(b); 
     Image img = (Image)r.FindControl("Image1"); 
     img.ImageUrl = path + @"\" + name; 

    } 

merci à l'avance sangita

+0

pouvez-vous post le code que vous utilisez pour la récupération de données avec la grille et la pagination? – TheVillageIdiot

Répondre

0

Lorsque vous écrivez votre méthode de recherche vous avez encore besoin de re-interroger la source de données et rebind votre gridview (ainsi que le réglage de la PageIndex).

0

en supposant que vous avez seulement le nom de l'image stockée dans la base de données que vous pouvez le faire dans le contrôle de l'image en vous la colonne modèle

définir la liaison de données pour l'URL de l'image comme

String.Format("images/{0}",Eval("photo")) 

et comme aubaine a dit

Lorsque vous écrivez votre méthode de recherche vous encore besoin de ré-interroger la source de données et rebind votre gridview (ainsi que l'esprit h en réglant le PageIndex).

vous pouvez déclarer une méthode qui va chercher les enregistrements de la base de données

protected void fillData() 
    { 
     da = new SqlDataAdapter("select * from t1", con); 
     ds = new DataSet(); 
     da.Fill(ds); 
     GridView1.DataSource = ds; 
     GridView1.DataBind(); 
    } 

et l'utiliser pour lier des données à votre gridview et dans votre fonction paging_indexChanging

GridView1.PageIndex = e.NewPageIndex; 
fillData();