Frage

Wie lege ich eine Eigenschaft eines Benutzersteuerelements fest? ListView'S LayoutTemplate aus dem Code-Behind?

<asp:ListView ...>
<LayoutTemplate>
<myprefix:MyControl id="myControl" ... />
</LayoutTemplate>
...
</asp:ListView>

Ich möchte das machen:

myControl.SomeProperty = somevalue;

Bitte beachten Sie, dass meine Kontrolle nicht aktiviert ist ItemTemplate, es ist in LayoutTemplate, Daher existiert es nicht für alle Elemente, sondern nur einmal.Ich sollte also einmal darauf zugreifen können, nicht für jedes datengebundene Element.

War es hilfreich?

Lösung

Um eine Eigenschaft eines Steuerelements festzulegen, das sich innerhalb der LayoutTemplate befindet, verwenden Sie einfach die FindControl-Methode für das ListView-Steuerelement.

var control = (MyControl)myListView.FindControl("myControlId");

Andere Tipps

var control = (MyControl)myListView.FindControl("myControlId");

Dies wird funktionieren, aber stellen Sie sicher, dass Sie dies nach der Datenbindung tun, da sonst die LayoutTemplate nicht erstellt wurde und ein Fehler auftritt.

Benutzen Sie die FindControl Methode für jedes ListViewItem.

var control = (MyControl)Item.FindControl("yourControlId");

Dies wurde in dieser Frage zum Stapelüberlauf beantwortet:
Greifen Sie auf ein Steuerelement innerhalb der LayoutTemplate einer ListView zu

Siehe den Kommentar zur akzeptierten Antwort von Tanathos.

Ich weiß, dass die Frage schon vor über einem Jahr gestellt wurde, aber es ist eines der ersten Ergebnisse für den Suchbegriff, den ich früher hier gefunden habe, deshalb wollte ich die Antwort allen anderen überlassen, die darüber gestolpert sind.

Das Layout wird erstellt und löst ein LayoutCreated-Ereignis aus, das besagt, dass das Layout im System erstellt wurde.

Anschließend können Sie listview.FindControl verwenden, um einen Verweis auf dieses Steuerelement abzurufen.

Falls Sie die VB.net-Version benötigen, finden Sie sie hier:

Dim control = CType(myListView.FindControl("myControlId"), MyControl)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top