2012-04-15 11 views
0

Sortieren von neu zu .NET und versuchen, zu verstehen, wie diese Aufgabe am besten zu erfüllen: Ich habe eine Listview mit einer Datenquelle, die eine Liste der Zeichenfolgewerte enthält. Die letzte Eigenschaft ist ein Text, den ich in die Textvorlage einfügen möchte. Normalerweise kann ich Markup und Text innerhalb der Liste platzieren, wenn sie nicht in einer Listview verwendet wird. Daher möchte ich diese Struktur beibehalten. Aber was wäre eine Möglichkeit, diese Saite dort zu platzieren? Ich habe Databinder.Eval versucht, aber wie erwartet heißt es, dass die Vorlage nicht die Eigenschaft enthält, auf die ich von Container.DataItem (die die Vorlage wird) verweisen.Platzieren der ListView DataItem-Eigenschaft in UserControl-Vorlage

<asp:ListView runat="server" 
    ID="ListView1" 
    OnItemDataBound="ListView1_ItemDataBound"> 

    <LayoutTemplate> 

     <div class="navigation"> 
      <asp:PlaceHolder runat="server" id="itemPlaceholder" /> 
     </div> 

    </LayoutTemplate> 

    <ItemTemplate> 

     <my:Control id="VideoLink1" runat="server"> 
      <Text> 
       --- PLACE CONTENT HERE -- 
      </Text> 
     </my:Control> 

    </ItemTemplate> 

</asp:ListView> 

Hat jemand eine Idee, wie man das erreicht? Würde sehr geschätzt werden.

+0

Diese Vorlagen existieren nur im Rahmen des Listview ... – IrishChieftain

+0

Ich denke, was ich versuche zu tun ist, wenn Daten an die Dataitem gebunden ist, ist es eine Möglichkeit, <%# Eval %> innerhalb der Textvorlage zu verwenden, . Oder vielleicht ist das etwas, was ich in einem Codefile machen muss (aber wieder nicht sicher, wie das geschehen würde). – jimlamiell

+0

Setzen Sie es in den Sitzungszustand und verwenden Sie ein Etikett? – IrishChieftain

Antwort

1

Verwenden Sie das ItemDatabound-Ereignis der ListView. In diesem finden Sie Ihr Steuerelement und weisen Sie dann die gewünschten Eigenschaften zu.

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListViewItemType.DataItem) 
     { 
      YourControl VideoLink1= e.Item.FindControl("VideoLink1") as YourControl ; 
      if(VideoLink1!= null) 
      { 
       YourClass obj = ((YourClass)(((System.Web.UI.WebControls.ListViewDataItem)(e.Item)).DataItem)); 
       VideoLink1.TextProperty = obj .TextProperty ; 
      }  
     } 
} 
Verwandte Themen