2009-05-27 55 views
0

我將對象數據源綁定到網格視圖。我的對象在其中一個屬性中有一個項目集合。其中一個是List。我如何循環這個並將項目綁定到GridView中的列?網格視圖綁定

+0

如果我是正確的,那麼每一行都會映射到其中一個對象,但是您希望將其中一個列綁定到該對象上的一個屬性,該屬性是一個集合。我的大問題是你打算如何展示這個集合?綁定列時,Asp.Net不知道如何呈現集合。如果你讓我們知道你想如何顯示,那麼我們可能會幫助你。 – Josh 2009-05-27 18:30:59

+0

Object的toString()。 – Greens 2009-05-27 19:04:06

回答

0

編輯將其綁定:更新在代碼中調用一個方法的背後產生的收集HTML標記。

在你的ASPX標記,你可以有類似以下內容:

<asp:GridView ID="myGridView" AutoGenerateColumns="False" runat="server"> 
     <Columns> 
      <asp:BoundField HeaderText="Item Name" DataField="Name" /> 
      <asp:TemplateField HeaderText="Collection Field"> 
       <ItemTemplate> 
        <%# ((_Default)Page).GetHtmlForList(DataBinder.Eval(Container.DataItem, "List"))%> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

然後在後面的代碼,你可以有這樣的事情:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      myGridView.DataSource = GetCollection(); 
      myGridView.DataBind(); 
     } 
    } 

    public string GetHtmlForList(object value) 
    { 
     string html = ""; 
     List<string> list = (List<string>)value; 
     foreach (string item in list) 
      html += item + "<br/>"; 
     return html; 
    } 

    private List<MyClass> GetCollection() 
    { 
     List<MyClass> coll = new List<MyClass>(); 
     coll.Add(new MyClass { Name = "First Item", List = new List<string>(new string[] { "1", "2", "3" }) }); 
     coll.Add(new MyClass { Name = "Second Item", List = new List<string>(new string[] { "Apples", "Pears", "Oranges" }) }); 
     coll.Add(new MyClass { Name = "Third Item", List = new List<string>(new string[] { "Red", "Green", "Blue" }) }); 

     return coll; 
    } 
} 

public class MyClass 
{ 
    public string Name { get; set; } 
    public List<string> List { get; set; } 
} 
1

從對象獲取的收集和使用

myGridView.DataSource = myCollection; 
myGridView.DataBind(); 
0

難道你沒有內部的一箇中繼器Col.模板,並簡單地將您的List綁定到RowDataBound中?