rispondere alla domanda di Broam " C'è un modo per farlo nel metodo del databound? Preferirei non hardcode "controlli [0]" in quanto questo è sciatta"
protected void ListView1_DataBound(object sender, EventArgs e)
{
ListView mylist = ((ListView)sender);
ListViewItem lvi = null;
if (mylist.Controls.Count == 1)
lvi = mylist.Controls[0] as ListViewItem;
if (lvi == null || lvi.ItemType != ListViewItemType.EmptyItem)
return;
Literal literal1 = (Literal)lvi.FindControl("Literal1");
if (literal1 != null)
literal1.Text = "No items to display";
}
Purtroppo, non ho trovato un modo di non usare i controlli [0].
Nei consueti appuntamenti Item (ItemDataBound o ItemCreate), è possibile utilizzare e.Item di ListViewItemEventArgs per ottenere ListViewItem. Nell'evento DataBound, c'è solo un EventArgs generico.
E per di più, sembra che ((Control) mittente). FindControl ("Literal1") non funziona neanche (trova il controllo da listview in cima all'albero), da qui l'uso di Controls [0] .FindControl (...) (trova il controllo da listviewitem).
fonte
2014-02-18 18:12:10
+1: questo è esattamente ciò di cui avevo bisogno. Grazie! – jonsidnell
C'è un modo per farlo nel metodo del databound? Preferisco * not * hardcode "controls [0]" dato che è sciatto. – Broam
se tolgo '.Controls [0]' Ricevo un errore. Puoi aiutarmi a capire perché ne hai bisogno? Sembra che gli stiamo dicendo l'indice del controllo e il nome, non riesco a capire perché entrambi sarebbero necessari. –