2012-04-15 9 views
0

.NETに新しいものを並べ替え、このタスクを最もよく行う方法を理解しようとしています。リストビューに文字列値のリストを含むデータソースがあります。最後のプロパティは、テキストテンプレートに配置したいテキストです。通常はリストビュー内で使用しないと、マークアップとテキストをテンプレート内に配置することができます。この構造を維持したいと思います。しかし、そこに文字列を置く方法は何でしょうか?私はDatabinder.Evalを試してみましたが、期待どおり、テンプレートにはContainer.DataItem(テンプレートになります)から参照しているプロパティは含まれていません。UserControlテンプレートにListView DataItemプロパティを配置する

<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

これらのテンプレートは、私だけは私が何をしようとしていると思います – IrishChieftain

+0

...リストビューのコンテキスト内に存在するデータがデータ項目にバインドされると、テキストテンプレート内<%# Eval %>を利用する方法がありますされます。あるいは、コードファイルでこれを行う必要があるかもしれませんが(やはり、どのように達成されるかはわかりません)。 – jimlamiell

+0

セッション状態にしてラベルを使用しますか? – IrishChieftain

答えて

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 ; 
      }  
     } 
} 
関連する問題