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++;
}
gvMec.SelectedIndex = index_marché;
#endregion
}
Herwin