2 votes

La liaison de gridview ASP.NET ne fonctionne pas / le contrôle ne s'affiche pas

Un autre problème de débutant. Pourquoi le code suivant avec une page asp.net ne fonctionne-t-il pas?

protected void Page_Load(object sender, EventArgs e)
{
    List list = new List();
    list.Add("Teststring");
    this.GridView.DataSource = list;
}

GridView est le contrôle GridView sur cette page asp. Cependant, aucun grille ne s'affiche du tout. Il est activé et visible. De plus, lorsque je débogue, GridView.Rows.Count est de 0. J'ai toujours supposé que vous pouvez simplement ajouter des Listes génériques et toutes les classes implémentant IList en tant que DataSource, et le GridView affichera alors automatiquement le contenu? Ou la raison ici est-elle que cela a été fait dans le gestionnaire d'événements page_load. et si oui, comment puis-je remplir une grille sans aucune interaction utilisateur au démarrage?

Merci encore.

4voto

Zachary Points 5216

Vous devriez appeler DataBind().

3voto

TheTXI Points 24470

Vous avez oublié d'appeler la méthode .DataBind() de la GridView. C'est ce qui va lier le contrôle à sa source de données et charger les résultats.

Exemple :

protected void Page_Load(object sender, EventArgs e)
{
    List list = new List();
    list.Add("Chaîne de test");
    this.GridView.DataSource = list;
    this.GridView.DataBind();
}

2voto

Rob Allen Points 7768

Contrairement à winforms, pour le développement ASP, vous devez spécifiquement appeler GridView.DataBind();. Je recommande également de séparer ce code dans une méthode distincte et d'encapsuler l'appel initial dans une vérification de postback. Cela vous évitera des problèmes à l'avenir.

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostback)
   {
       List list = new List();
       list.Add("Teststring");
       bindMydatagrid(list);
   }
}

protected void bindMydatagrid(List list)
{
    gv.DataSource = list;
    gv.DataBind();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X