2012-04-15 57 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 ; 
      }  
     } 
}