2011-05-25 86 views
1
Class Section 
    List<Group> groupList 

Class Group 
    List<Products> productList 
    Group ID 
    Group Name 

Class Product 
    Product ID 
    Product Name 
    Product Details 

内的集合上使用C#,.NET 4.0,如何绑定这个数据到GridView让我有这种格式GridView的 - 绑定集合

G1_Name 
     P1_Name P1_Details 
     P2_Name P2_Details 
G2_Name 
     P3_Name P3_Details 
     P4_Name P4_Details 

感谢

+0

你指的是什么语言? – 2011-05-25 20:26:28

+0

你能指出你使用的语言吗? – 2011-05-25 20:29:31

+0

对不起,C#和我正在使用.NET 4.0 – Andy 2011-05-25 20:30:44

回答

0

这听起来就像你试图绑定一个分层集合一样。从你所描述的,我会建议使用ListView而不是GridView。您将在显示数据方面获得更多的控制权和灵活性。然而,选择是你的,下面的代码可以很容易地修改为在GridView中使用。

该代码将产生以下结构:

enter image description here

ASPX

<asp:ListView runat="server" ID="listView"> 
     <LayoutTemplate> 
      <ul><asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder></ul> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <li><%# Eval("GroupName") %> 
       <asp:ListView runat="server" DataSource='<%# Eval("productList")%>'> 
        <LayoutTemplate> 
         <ul><asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder></ul> 
        </LayoutTemplate> 
        <ItemTemplate> 
         <li><%# Eval("ProductName") %> - Details: <%# Eval("ProductDetails") %></li> 
        </ItemTemplate> 
       </asp:ListView> 
      </li> 
     </ItemTemplate> 
    </asp:ListView> 

C#

 public class Section 
     { 
      public List<Group> groupList { get; set; } 
     } 

     public class Group 
     { 
      public List<Product> productList { get; set; } 
      public int GroupID { get; set; } 
      public string GroupName { get; set; } 
     } 

     public class Product 
     { 
      public int ProductID { get; set; } 
      public string ProductName { get; set; } 
      public string ProductDetails { get; set; } 
     } 

     Section section = new Section { groupList = new List<Group>() }; 

     Group group = new Group { GroupID = 1, GroupName = "Fruits", productList = new List<Product>() }; 
     Product product = new Product { ProductID = 1, ProductName = "Apples", ProductDetails = "On Sale" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 2, ProductName = "Oranges", ProductDetails = "Not on Sale" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 3, ProductName = "Pears", ProductDetails = "Big Spender Sale" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 4, ProductName = "Grapes", ProductDetails = "Not on Sale" }; 
     group.productList.Add(product); 

     section.groupList.Add(group); 

     group = new Group { GroupID = 2, GroupName = "Vegetables", productList = new List<Product>() }; 
     product = new Product { ProductID = 5, ProductName = "Carrots", ProductDetails = "Not on Sale" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 6, ProductName = "Celery", ProductDetails = "Last week only" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 7, ProductName = "Eggplant", ProductDetails = "Big Spender Sale" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 8, ProductName = "Oniones", ProductDetails = "N/A" }; 
     group.productList.Add(product); 

     section.groupList.Add(group); 

     group = new Group { GroupID = 3, GroupName = "Meat", productList = new List<Product>() }; 
     product = new Product { ProductID = 9, ProductName = "Beef", ProductDetails = "On Sale" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 10, ProductName = "Pork", ProductDetails = "Back for two weeks" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 11, ProductName = "Chicken", ProductDetails = "On sale" }; 
     group.productList.Add(product); 
     product = new Product { ProductID = 12, ProductName = "Turkey", ProductDetails = "Going fast" }; 
     group.productList.Add(product); 

     section.groupList.Add(group); 

     listView.DataSource = section.groupList; 
     listView.DataBind(); 
    } 
1

一个搜索解决方案N(许多可能的):

  • 一个GridView绑定到群组

  • 与包含数据绑定列表控制一个TemplateField的列表数据(例如RepeaterDataList,或埃文另一GridView)。

  • 在数据绑定列表控件的DataSource属性绑定到Group.ProductList属性:

<asp:GridView ...> 
    <Columns> 
     <asp:TemplateField ...> 
      <ItemTemplate> 
       <asp:Repeater ... DataSource='<%# Eval("ProductList")) %>'> 
        <ItemTemplate> 
         ... controls bound to Product properties 
        </ItemTemplate> 
       </asp:Repeater> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView>