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

Class Group 
    List<Products> productList 
    Group ID 
    Group Name 

Class Product 
    Product ID 
    Product Name 
    Product Details 

utilisant C#, .NET 4.0, Comment lier ces données à la GridView pour que j'ai ce formatGridview - Reliure une collection dans une collection

G1_Name 
     P1_Name P1_Details 
     P2_Name P2_Details 
G2_Name 
     P3_Name P3_Details 
     P4_Name P4_Details 

Merci

+0

De quelle langue parlez-vous? –

+0

Pourriez-vous indiquer la langue que vous utilisez? –

+0

Désolé, C# et j'utilise .NET 4.0 – Andy

Répondre

0

Il semble comme si vous essayiez de lier une collection hiérarchique. De ce que vous décrivez, je recommanderais d'utiliser un ListView au lieu d'un GridView. Vous aurez beaucoup plus de contrôle et de flexibilité sur l'affichage de vos données. Cependant, le choix vous appartient et le code ci-dessous peut être facilement modifié pour une utilisation dans un GridView.

Le code produira la structure suivante:

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

une solutio n (de nombreux possible):

  • A GridView qui est lié aux données à une liste de groupes

  • avec un TemplateField qui contient un contrôle de liste lié aux données (par exemple, Repeater, DataList, ou evan un autre GridView).

  • où la propriété DataSource la liste lié aux données de contrôle est liée à la propriété 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> 
Questions connexes