1 votes

Panneau avec dans Listview me donne une erreur (Référence d'objet non définie à une instance d'un objet).

J'ai un panneau dans le modèle d'item de la vue de liste qui ne doit s'afficher que lorsque l'utilisateur est connecté, par défaut la visibilité = false. L'aide est appréciée.

Voici mon code C# :

    Panel pnlOptions = (Panel)ListView1.FindControl("pnlOptions");
    pnlOptions.Visible = true;

Code Aspx:

        Option 1:
        dropdown here

    Option 1:
    dropdwon here

0voto

Reed Copsey Points 315315

Vous obtenez l'erreur car l'appel FindControl est soit:

  1. Échoue - Si l'élément n'est pas trouvé comme enfant du contrôle, FindControl renvoie null.

  2. Trouve le mauvais objet, et la conversion en (Panel) échoue.

Je recommande de réécrire le code comme suit:

Control control = ListView1.FindControl("pnlOptions");
Panel pnlOptions = control as Panel;
pnlOptions.Visible = true;

Vous pouvez ensuite définir des points d'arrêt, et déterminer quelle ligne provoque l'erreur.

0voto

Developer Points 647

Mon problème était que j'essayais d'y accéder incorrectement à travers une fonction que j'ai créée alors que je devais utiliser l'événement Item_Created. Voici le code final fonctionnel :

protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
{
    Control control = e.Item.FindControl("pnlOptions");
    Panel pnlOptions = control as Panel;
    pnlOptions.Visible = true;
}

Merci Reed.

0voto

alejandrobog Points 1499

Cela devrait également fonctionner :

foreach (var item in ListView1.Items)
  {
    Panel pnlOptions = (Panel)item.FindControl("pnlOptions");
    pnlOptions.Visible = true;
  }

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