Bonjour,
Voila ma question je débute en ASP.NET (C#) je fait une petite application web pour la recherche intérimaire depuis une base SQL.SERVER tout fonctionne mais j'aimerais optimiser le code C# et plus particulièrement mon repeater affichant les résultats de ma recherche.
Je m'explique à ce jour j'ai 2 repeater distinct 1 pour ma page "résultat.aspx" et 1 autre pour l'affichage complet de ma table "Affichage.aspx", si dans un futur proche je serais amener à ajouter une colonne je devrais modifier à 2 endroits..
Donc voila si quelqu'un aurais une idée je n'ai pas trouvé...j'ai du mal avec la recherche je n'ai pas les "bon mot"
voila mon code :
Code :
protected void Page_Load(object sender, EventArgs e)
{
//récupération des paramètre de l'url
string Nomcherche = Request.QueryString["nom"];
string Idrechercher = Request.QueryString["id"];
string TypeRecherche = Request.QueryString["*"];
//boolèen si aucun résultat
bool Recherche = false;
//affecte la methode rptPersonnes_ItemDataBound lorsque l'on va boucler sur les données
rptPersonnes.ItemDataBound += new RepeaterItemEventHandler(rptPersonnes_ItemDataBound);
List ListInterimaire = new List();
string ConnectionString = "Data Source=PILOTT-LGZ;Initial Catalog=Interimaires;Integrated Security=True;Pooling=False";
SqlConnection SqlC = new SqlConnection(ConnectionString);
SqlC.Open();
SqlCommand SQLCmd = SqlC.CreateCommand();
if (TypeRecherche == "deb")
{
SQLCmd.CommandText = " SELECT * FROM DataBaseInterimaire.dbo.Interimaire WHERE Nom LIKE '" + Nomcherche + "%'";
}
else if (TypeRecherche == "fin")
{
SQLCmd.CommandText = " SELECT * FROM DataBaseInterimaire.dbo.Interimaire WHERE Nom LIKE '%" + Nomcherche + "'";
}
else if (TypeRecherche == "com")
{
SQLCmd.CommandText = " SELECT * FROM DataBaseInterimaire.dbo.Interimaire WHERE Nom LIKE '%" + Nomcherche + "%'";
}
else
{
SQLCmd.CommandText = " SELECT * FROM DataBaseInterimaire.dbo.Interimaire WHERE Nom = '" + Nomcherche + "'";
}
SqlDataReader SqlReader = SQLCmd.ExecuteReader();
while (SqlReader.Read())
{
Personne candidat = new Personne();
int a = 0;
if (int.TryParse(SqlReader["Id"].ToString(), out a))
{
candidat.ID = a;
}
candidat.Nom = SqlReader["Nom"].ToString();
candidat.Email = SqlReader["Email"].ToString();
candidat.Ville = SqlReader["Ville"].ToString();
candidat.DateNaissance = Convert.ToDateTime(SqlReader["DateNaiss"]);
Recherche = true;
NoResult.Text = string.Empty;
ListInterimaire.Add(candidat);
//on lie notre source de données
rptPersonnes.DataSource = ListInterimaire;
//FichierNom.GetPersonnesByNom(Nomcherche)
//on dit au repeater de faire le rendu des données
rptPersonnes.DataBind();
}
SqlC.Close();
if (Recherche == false)
{
NoResult.Text = "Aucun resultat";
}
}
void rptPersonnes_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Personne personneEnCours = (Personne)e.Item.DataItem;
Label lblNom = (Label)e.Item.FindControl("lblNom");
Label lblId = (Label)e.Item.FindControl("lblId");
Label lblVille = (Label)e.Item.FindControl("lblVille");
Label lblDate = (Label)e.Item.FindControl("lblDate");
Label lblEmail = (Label)e.Item.FindControl("lblEmail");
HyperLink LienEdit = (HyperLink)e.Item.FindControl("LienEdit");
HyperLink LienSup = (HyperLink)e.Item.FindControl("LienSup");
//affectation des donnée dans le repeater
lblNom.Text = personneEnCours.Nom;
lblId.Text = personneEnCours.ID.ToString();
lblVille.Text = personneEnCours.Ville;
lblEmail.Text = personneEnCours.Email;
lblDate.Text = personneEnCours.DateNaissance.ToString();
//lien vers la page édition avec comme paramètres l'id de l'intérimaire concerné
LienEdit.NavigateUrl = "Edition.aspx?id=" + lblId.Text;
//lien vers la page suppression avec comme paramètres l'id de l'intérimaire concerné
LienSup.NavigateUrl = "Suppression.aspx?id=" + lblId.Text;
}
}
cordialement guillaume