我有一个名为orders
的表。
我想显示所订购产品数量的Order Date
,Sum
和product_name
。
以下是我想要显示的数据:
如上所述,我希望水平显示产品名称,产品订单的总和按日期垂直显示。
我正在使用C#和MS Access数据库。
我可以在gridview中逐行显示数据。这是代码:
private void btn_all_orders_Click(object sender, EventArgs e)
{
try
{
connection.open
OleDbCommand command = new OleDbcommand();
command.connection = connection;
string query = "select order_date as 'Order Date', product_name as
'Items', Sum(order_quantity) as 'No of Orders' from order where cust_id =
'" + txt_cust_id.Text + "' group by order_date, product_name";
command.commandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
datagridview.DataSource = dt;
connectionn.Close();
}
catch (Exception ex)
{
Messagebox.Show("Error " + ex);
connection.Close();
}
}
如何更改此内容以实现上述目标?
答案 0 :(得分:0)
我认为你要求的是:
您需要做的是在您的数据表中添加一列。 Then add an expression to that column it.
da.Fill(dt);
dt.Columns.Add("TOTAL");
dt.Columns("Total").Expression = "Count(Product1) + Count(Product2) + Count(Product3)";
datagridview.DataSource = dt;
connectionn.Close();
底部的总数来自您的SelectQuery =>总和(order_quantity)。您可以修改查询以摆脱它。
上面的代码是伪未经测试的代码 - 所以请阅读链接。
修改强> 你也可以看看这里:Display Data Vertically in the DataGridview 要发布的代码太多,但基本上真正的工作是通过翻转数据集完成的 - 正如Gamal先生所做的那样。
public DataSet FlipDataSet(DataSet my_DataSet)
{
DataSet ds = new DataSet();
foreach (DataTable dt in my_DataSet.Tables)
{
DataTable table = new DataTable();
for (int i = 0; i <= dt.Rows.Count; i++)
{ table.Columns.Add(Convert.ToString(i)); }
DataRow r;
for (int k = 0; k < dt.Columns.Count; k++)
{
r = table.NewRow();
r[0] = dt.Columns[k].ToString();
for (int j = 1; j <= dt.Rows.Count; j++)
{ r[j] = dt.Rows[j - 1][k]; }
table.Rows.Add(r);
}
ds.Tables.Add(table);
}
return ds;
}