2012-04-15 55 views
0

.NET新增功能的排序並試圖瞭解如何最好地完成此任務:我有一個帶有包含字符串值列表的數據源的列表視圖。最後一個屬性是我想放置在Text模板中的一些文本;通常當不在listview中使用時,我可以在模板內成功放置標記和文本,所以我想保留這個結構。但是,將那個字符串放在那裏的方法是什麼?我試過Databinder.Eval,但正如預期的那樣,它表示該模板不包含我從Container.DataItem(它成爲模板)引用的屬性。將ListView DataItem屬性放入UserControl模板

<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> 

任何人都有一個想法如何做到這一點?將不勝感激。

+0

這些模板只在ListView的背景下存在... – IrishChieftain 2012-04-15 16:29:47

+0

我覺得我想要做的是,一旦數據被綁定到DataItem的,有沒有到文本模板中使用<%# Eval %>方式。或者,也許這是我可能不得不在一個代碼文件中做的事情(但同樣,不知道如何完成)。 – jimlamiell 2012-04-15 16:37:27

+0

將它置於會話狀態並使用標籤? – IrishChieftain 2012-04-15 16:43:19

回答

1

使用ListView的ItemDatabound事件。在那找到你的控制,然後分配所需的屬性。

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 ; 
      }  
     } 
}