使用数据来填充的GridView 2
问题描述:
这可能甚至是不可能的,但我有一个gridivew对于示例数据是:使用数据来填充的GridView 2
我想,然后填充第二个GridView控件显示项目,该项目的订单,像这样:
这甚至可能吗?想过要做一个像这样的FOREACH循环,但不知道我会如何按项目分组#然后为该项目的每个订单做一个i ++?
DataTable dtProducts = new DataTable();
// Items for the product Gridview
foreach (GridViewRow row in ordersGridView.Rows)
{
var products = from orderRow in dt.AsEnumerable()
group orderRow["orderNo"] by orderRow["itemNo"] into grp
select new { product = grp.Key, orders = grp.Count() };
dt.Rows.Clear();
foreach (var prod in products)
{
DataRow r = dtProducts.NewRow();
r["PRODUCTS"] = prod.product;
r["ORDERS"] = prod.orders;
dtProducts.Rows.Add(r);
}
}
productGridView.DataSource = dtProducts;
productGridView.DataBind();
答
假设你的第一台至少有两个字段:订单和项目:
首先,查询会给你的项目有两个字段可枚举 - 产品和订单的数量。然后,如果您想将它作为DataTable,则可以遍历查询结果。
var products = from orderRow in dtOrders.AsEnumerable()
group orderRow["ORDERID"] by orderRow["ITEM"] into grp
select new { product = grp.Key, orders = grp.Count() };
dtProducts.Rows.Clear();
foreach (var prod in products)
{
DataRow r = dtProducts.NewRow();
r["PRODUCTS"] = prod.product;
r["ORDERS"] = prod.orders;
dtProducts.Rows.Add(r);
}
我认为这是可能的这两个步骤合并,但这应该让你开始至少:)
答
得到这个工作的伟大工程...感谢大家:
var result = from row in dt.AsEnumerable()
group row["orderNo"] by row["itemNo"] into grp
select new
{
itemNum = grp.Key,
orders = grp.Count()
};
foreach (var t in result)
{
dtProducts.Rows.Add(t.itemNum, t.orders, "", "");
}
我上面更新了我的代码..这就是我正在使用的,当我运行它时,dtProducts Gridview中什么也没有显示? – ksuProgrammer
不需要将该东西放入该foreach循环中。它会给你整个清单,每个产品1个对象,包含产品名称和订单数量。 DataGridView是基于一个表,对吧?你问题中第一张表格的基础。回答假设您的代码中的这个表名为dtOrders。并且它具有包含“CAR1”,“HAMMER”等的列“ORDERID”(保存1,2,3)和名为“ITEM”的列。如果表名或列名不同,在我的答案中替换这些名字。然后查看dtProducts表是否按预期填充。 –
是否有可能根据两个不同的字段进行分组,或基于这两个不同的字段进行计数? – ksuProgrammer