2013-12-23 87 views
2

如何綁定這個字典網格視圖 -如何綁定字典包含列表,網格視圖

Dictionary<int, Actor> actors = new Dictionary<int, Actor>{ 
    { 
     1,new Actor 
     { 
      ActorId = 1, 
      ActorName= "Rajanikant", 
      BirthDate =DateTime.Parse("12-12-1949"), 
      BirthPlace ="Bangalore", 
      Photo ="~/Images/1.jpg", 
      Movies = new List<string>{"Shivaji (2007)","Baba (2002)","ChaalBaaz (1989)"} 
     } 
    },     
    { 
     2,new Actor 
     { 
      ActorId = 2, 
      ActorName= "Jennifer Aniston", 
      BirthDate =DateTime.Parse("11-2-1969"), 
      BirthPlace ="Sherman Oaks", 
      Photo ="~/Images/2.jpg", 
      Movies=new List<string>{"Friends (1994)","Bruce Almighty (2003)","Just Go with It (2011)"} 
     } 
    }, 
}; 

使用C#在asp.net

+0

你也可以標記編程語言嗎? – Kracekumar

+0

你嘗試了什麼? – AbhinavRanjan

+0

它顯示了一些通用的類名在網格視圖綁定 – Shiv

回答

4

您需要的GridView DataDource設置爲Dictionary.Values象下面這樣:

GridView1.DataSource = actors.Values; 
GridView1.DataBind(); 

編輯:而標記可能看起來像這樣(感謝julealgon對於p ointing電影列表):

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server"> 
    <Columns> 
     <asp:BoundField DataField="ActorId" HeaderText="Actor Id" /> 
     <asp:BoundField DataField="ActorName" HeaderText="Actor Name" /> 
     <asp:BoundField DataField="BirthDate" HeaderText="Birth Date" /> 
     <asp:BoundField DataField="BirthPlace" HeaderText="Birth Place" /> 
     <asp:TemplateField HeaderText="Photo" > 
      <ItemTemplate> 
       <asp:Image ID="Image1" ImageUrl='<%#Eval("Photo") %>' runat="server" /> 
       </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Movies" > 
      <ItemTemplate> 
       <asp:ListBox ID="ListBox1" DataSource='<%#Eval("Movies") %>' runat="server"></asp:ListBox> 
       </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

下面是它是如何顯示: enter image description here

您可以下載我已經用來測試你的代碼here測試項目。

+0

但在上面的代碼電影列表值不是打印在下面提到的值打印 - System.Collections.Generic.List'1 [System.String]請提供解決方案,以便列表中的所有內容也綁定在網格視圖 – Shiv

+1

@Shiv這將取決於您希望如何顯示值。您可以在Movies欄的網格中創建一個TemplateField,並將一個Listbox放置在它的ItemTemplate中,將DataSource設置爲該模型的.Movies屬性。比如像這樣的'/>'應該可以正常工作。 – julealgon

+1

@Shiv此外,圖像的網址可能對你我沒有用嗎?在這種情況下,您可以使用ImageField並將它的DataImageUrlField屬性設置爲「Photo」,如下所示:'。請記住,afzalulh可能使用了網格上的'AutogenerateColumns'屬性來創建該基本佈局。如果您的模型不僅包含簡單的字段,例如整數和字符串,您可能需要構建自己的列或使用更靈活的類似[動態數據](http://msdn.microsoft.com/zh-cn/庫/ ee845452.aspx)。 – julealgon