如何解决Gridview-在集合内绑定一个集合
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,以便具有这种格式
G1_Name
P1_Name P1_Details
P2_Name P2_Details
G2_Name
P3_Name P3_Details
P4_Name P4_Details
谢谢
解决方法
一种解决方案(很多):
一个GridView,它是绑定到组列表的数据
包含包含数据绑定列表控件的TemplateField(例如,
Repeater
,DataList
或evan另一个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>
,听起来您正在尝试绑定分层集合。根据您的描述,我建议您使用ListView而不是GridView。您将在数据显示方面获得更多控制和灵活性。但是,选择是您自己的,并且可以轻松修改以下代码以在GridView中使用。
该代码将产生以下结构:
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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。