Trouver le contrôle dans ListView EmptyDataTemplate
J'ai l'un ListView
comme ce
<asp:ListView ID="ListView1" runat="server">
<EmptyDataTemplate>
<asp:Literal ID="Literal1" runat="server" text="some text"/>
</EmptyDataTemplate>
...
</asp:ListView>
Dans Page_Load()
j'ai le texte suivant:
Literal x = (Literal)ListView1.FindControl("Literal1");
x.Text = "other text";
mais x
retourne null
. J'aimerais changer le texte de la Literal
de contrôle mais je n'ai aucune idée de comment le faire.
source d'informationauteur Caline
Vous devez vous connecter pour publier un commentaire.
Je crois que, à moins que vous appelez la
DataBind
méthode de votreListView
quelque part dans le code derrière, leListView
ne sera jamais essayer de lier des données. Rien ne sera rendu, et même laLiteral
de contrôle n'est pas créée.Dans votre
Page_Load
événement essayez quelque chose comme:Vous pouvez utiliser les éléments suivants:
Ce n'est pas précisément ce que vous avez demandé, mais une autre façon de faire ce genre de chose, c'est comme cela:
où Foobar est défini dans votre page du fichier code-behind,
Une approche alternative...
Dans le code-behind...
...
Répondre Broam la question "Est-il un moyen de le faire dans le databound méthode? Je préfère ne pas coder en dur "contrôles[0]" comme c'est bâclée"
Malheureusement, je n'en ai pas trouvé un moyen de ne pas utiliser les Commandes[0].
Dans l'habitude événements d'Élément (ItemDataBound ou ItemCreate), vous pouvez utiliser l'e.Élément de la ListViewItemEventArgs pour obtenir le ListViewItem. Dans l'événement DataBound, il n'y a qu'un générique EventArgs.
Et en plus de cela, il semble que ((de Contrôle)de l'expéditeur).FindControl("Literal1") ne fonctionne pas non plus (trouver de contrôle à partir de la liste en haut de l'arbre), d'où l'utilisation de Contrôles[0] .FindControl(...) (pour trouver de contrôle de la listviewitem).
je développe dans visual studio une appli en c# avec des webforms sous asp.net. J'ai dans mes pages aspx des listview avec des tag et qui fonctionnent parfaitement avec un databind sauf que le tag ne marche que la première fois car si je relance un databind avec la même table, c'est le tag qui est exécuté alors que la datatable contient des données. Je tourne en rond et ne trouve pas la parade.