Création dynamique d'un contrôle de type GridView
ASP.NET 2.0
Visual C#
protected void hlIdee_ClientClick(object sender, EventArgs e)
{
panelListeIdees.Visible = true;
if (sender.GetType().Name.Equals("LinkButton"))
{
gvListeIdees.Columns.Clear();
// Gestion de l'accès à la base de données (requêtes) dans des classes appelées "Manager"
// Aucune requête SQL n'est donc visible dans le code behind
Idee_Manager idee_manager = new Idee_Manager();
BoundField bfAjoutDate = new BoundField();
// Ajout d'un contrôle de type "lien" dans le GridView
HyperLinkField hlPreview = new HyperLinkField();
hlPreview.DataTextField = "preview";
hlPreview.HeaderText = "Preview";
// Définition d'une partie du lien (l'id de l'élément sélectionné qui sera utilisé dans l'adresse)
string[] test = { "id" };
hlPreview.DataNavigateUrlFields = test;
BoundField bfAuteur = new BoundField();
bfAuteur.DataField = "auteur";
bfAuteur.HeaderText = "Auteur";
BoundField bfDateCreation = new BoundField();
bfDateCreation.DataField = "dateCreation";
bfDateCreation.HeaderText = "Date Creation";
gvListeIdees.Columns.Add(bfAuteur);
gvListeIdees.Columns.Add(bfDateCreation);
DataTable dtListe = null;
string statut = "";
// On veut afficher différents contrôles en fonction du lien cliqué.
switch (((LinkButton)sender).ID)
{
case "hlIdeeValide":
bfAjoutDate.DataField = "dateValidation";
bfAjoutDate.HeaderText = "Date Validation";
gvListeIdees.Columns.Add(bfAjoutDate);
statut = "valide";
dtListe = idee_manager.GetAllIdeeByStatut(statut);
break;
case "hlIdeeAttente":
statut = "attente";
dtListe = idee_manager.GetAllIdeeByStatut(statut);
break;
case "hlIdeeRefus":
bfAjoutDate.DataField = "dateRefus";
bfAjoutDate.HeaderText = "Date Refus";
gvListeIdees.Columns.Add(bfAjoutDate);
statut = "refus";
dtListe = idee_manager.GetAllIdeeByStatut(statut);
break;
}
// Fin de la création du contrôle HyperLink en lui renseignant l'adresse
// complète à visiter lors de la sélection
hlPreview.DataNavigateUrlFormatString = "Fiche_Idee.aspx?statut=" + statut + "&id={0}";
gvListeIdees.Columns.Insert(0, hlPreview);
gvListeIdees.DataSource = dtListe;
gvListeIdees.DataBind();
}
}