herve_labenere
Messages postés23Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention27 octobre 2008
-
1 févr. 2008 à 17:04
cs_poulouf
Messages postés14Date d'inscriptiondimanche 10 septembre 2006StatutMembreDernière intervention25 mars 2008
-
25 mars 2008 à 08:17
Bonsoir,
Je tente de mettre en place un moteur de recherche sur mon application de suivi des marchés :
Un champs texte en haut à droite, qui liste ds une 2nd page les marchés et les
projets en rapport avec le mot recherché.
Cette page de résultat doit rediriger vers le listing des marchés
(marchés.aspx), s'il s'agit d'un marché, ou le listing des
projets(affaires.aspx) s'il s'agit d'un projet.
Donc je fais un lien avec en paramètre l'ID du marché recherché et trouvé. Ex :
marchés.aspx?id=789
Du coup ds la page marchés.aspx, j'ai le code suivant ds le load de la page :
int id_marche = Int32.Parse(Request.Querystring["id"]
Jusqu'ici pas de problème.
Mais comment faire pour sélectionner la ligne correspondante ds mon listiing (Gridview) des
marchés ?
Il y a bien une propriété Gridview.SelectedDatakey, mais c'est en lecture seule.
Sinon, il y a Gridview.SelectedIndex, qui est en lecture et en écriture, mais
comment alors obtenir la correspondance entre la clef primaire d'une ligne et
l'index de cette ligne ???
Je suis obligé pour l'instant, de faire une boucle, de parcourir le gridview et
si le champs de la colonne ID = l'id marché récupéré du querystring
Mais ça n'est pas non plus satisfaisant, car si la ligne du marché se trouve ds
la 2nd page de mon gridview, il ne la trouve pas...
Voici le code
------------
if (Request.QueryString["id"] != null)
{
int id_marché = Int32.Parse(Request.QueryString["id"]);
#region "Correspondance id / index"
int index_marché = 0;
while (gvMec.PageIndex < gvMec.PageCount)
{
foreach (GridViewRow gvrow in gvMec.Rows)
{
if (gvrow.Cells[0].Text == id_marché.ToString())
{
index_marché = gvrow.DataItemIndex;
break;
}
}
gvMec.PageIndex++;
}
cs_poulouf
Messages postés14Date d'inscriptiondimanche 10 septembre 2006StatutMembreDernière intervention25 mars 2008 2 févr. 2008 à 08:04
Salut,
tu peux le faire au binding de la gridview,
en parcourant les items et vérifiant qu'ils correspodent ou pas a tes données,
tu lance un select() quand tu as trouvé le bon...
herve_labenere
Messages postés23Date d'inscriptionmardi 11 juillet 2006StatutMembreDernière intervention27 octobre 2008 2 févr. 2008 à 11:45
Merci pour cette piste,
Mais qu'entends-tu par "le faire au binding de la gridview".
Ca m'interesse beaucoup, mais je ne vois paq trop le code que cela donnerait.
cs_poulouf
Messages postés14Date d'inscriptiondimanche 10 septembre 2006StatutMembreDernière intervention25 mars 2008 2 févr. 2008 à 15:15
pardon, je me suis un peu enflammé, j avais mal lu,
je crois que de plus les gridview sur plusieurs page l index ne reprend pas a 0,
donc nbpage * taille page + index...
enfin le databindind est toujours bon a prendre :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_TOzZ
Messages postés1Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention19 février 2008 19 févr. 2008 à 18:34
salut poulouf,
j'ai repris ton code ci-dessus pour la correspondance id et index
#region "Correspondance id / index"
int idx = -1;
while (
this.GridView1.PageIndex <
this.GridView1.PageCount)
{
foreach (
GridViewRow gvrow
in
this.GridView1.Rows)
{
if (gvrow.Cells[0].Text == result.ToString())
{
idx = gvrow.DataItemIndex;
break;
}
}
GridView1.PageIndex++;
}
GridView1.SelectedIndex = idx;
#endregion
et tu dis t'être un peu enflammé... nbpage * taille page + index...
peux-tu complèter le bout de code avec ta solution (nbpage * taille page + index...)?
cs_poulouf
Messages postés14Date d'inscriptiondimanche 10 septembre 2006StatutMembreDernière intervention25 mars 2008 25 mars 2008 à 08:17
Salut,
c'était juste pour positionner la gridview
sur la bonne page (en fonction du nombre de données et tout ca...)
tu dois avoir bonnepage = index/taillepage avec le select dans le databind,
perso je suis pas fan du paging sur les gridview, même si ça a son avantage
dans le cas de tri alphabétique et quand il y a beaucoup de données...