I have a scenario where I will be showing a Customer data in a GridView. I have a Dictionary collection like this IDictionary<Customer, IList<CustomerOrder>>.
第一个问题:我可以将这个字典绑定到ASP.Net GridView上吗?
现在,下一个问题,我想要显示以下类型的UI,即在客户的一行中显示多个CustomerOrders。
FName LastName OrderNumber MarkOrderCompleted(RadioButton) ABC DEF 123单选按钮是否345单选按钮是否678单选按钮是否GHI JKL 213单选按钮是否546单选按钮是否768单选按钮是否
FName和LastName将从字典中的Customer对象填充,OrderNumber和MarkOrderCompleted将从CustomerOrders填充。下面是一个提交按钮,根据订单将radion buton状态值保存到数据库中。如果能立即得到帮助,我们将非常感激。先谢谢你...
发布于 2010-10-24 22:34:13
是否必须在同一字典中同时包含Customer和CustomerOrder?我会使用具有两个不同集合的嵌套网格。嵌套网格使用第一个网格的"DataKeyNames“属性作为参数。示例:
网格:
<asp:GridView ID="CustomerGrid" runat="server" EnableModelValidation="True"
onrowdatabound="CustomerGrid_RowDataBound" DataKeyNames="CustomerId">
<Columns>
<asp:TemplateField HeaderText="Orders">
<ItemTemplate>
<asp:GridView ID="OrderGrid" runat="server">
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
代码隐藏:
List<Customer> CustomerList = new List<Customer>();
List<Orders> Orders = new List<Orders>();
protected void Page_Load(object sender, EventArgs e)
{
// Add some customers
CustomerList.Add(new Customer() { CustomerId = 1, CompanyName = "TestCompany", FirstName = "John", LastName = "West" });
CustomerList.Add(new Customer() { CustomerId = 2, CompanyName = "AnotherCompany", FirstName = "Alan", LastName = "East" });
// Add some orders
Orders.Add(new Orders() { CustomerId = 1, OrderId = 1, OrderDate = DateTime.Now, Sum = 300 });
Orders.Add(new Orders() { CustomerId = 1, OrderId = 2, OrderDate = DateTime.Now, Sum = 600 });
Orders.Add(new Orders() { CustomerId = 2, OrderId = 3, OrderDate = DateTime.Now, Sum = 2000 });
Orders.Add(new Orders() { CustomerId = 2, OrderId = 4, OrderDate = DateTime.Now, Sum = 100 });
// Bind customerlist to grid
CustomerGrid.DataSource = CustomerList;
CustomerGrid.DataBind();
}
protected void CustomerGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Get customer id for row
int customerId = (int)CustomerGrid.DataKeys[e.Row.RowIndex].Value;
// Get the nested grid control
GridView OrderGrid = e.Row.FindControl("OrderGrid") as GridView;
// Get orders for customer
OrderGrid.DataSource = Orders.Where(o => o.CustomerId == customerId);
OrderGrid.DataBind();
}
}
https://stackoverflow.com/questions/4007676
复制相似问题