【问题标题】:Datagridview get the total sum of a specific columnDatagridview 获取特定列的总和
【发布时间】:2017-09-24 05:17:04
【问题描述】:

我想获取 Datagridview 中某个特定列的所有值没有任何实际的单元格点击或行选择。

我基本上有 2 个 Datagridviews; 订单和订单行。

Order Datagridview 有一列名为:

订单总数

Order Line Datagridview 有一列名为:

单价

我想获取单价列的总和,并将总和传输到列 Order Total 中的其他 datagridview。关于如何处理这个的任何想法?

编辑:我使用了计算方法但得到了错误:System.InvalidCastException: 'Object cannot be cast from DBNull to other types.'

代码:我有一个名为“unit_price”的列

int totalprice = Convert.ToInt32(line_dt.Compute(expression: "SUM(unit_price)", filter: string.Empty));

我不知道是什么导致了这个错误。

【问题讨论】:

  • 如果您的网格绑定到DataTable,则调用该表的Compute 方法。
  • 是的,它绑定到一个DataTable。我会调查的。
  • @jmcilhinney 我做了计算方法,但它只会给出一个错误:System.InvalidCastException: 'Object cannot be cast from DBNull to other types.'

标签: c# winforms datagridview


【解决方案1】:

不过,您需要首先填写您的订单数据表(即您的订单数据表必须包含每个订单项

遍历Order DataTable,在OrderLine DataTable中找到对应的OrderLines(通过外键)

总结并将值更新到您在 Order DataGridView 中创建的新列中

然后使用行过滤器,改变订单数据网格视图并从订单数据网格视图中获取过滤外键,如下所示:

    private void dgvOrder_SelectionChanged(object sender, EventArgs e)
         {
             if (dgvOrder.SelectedCells.Count > 0)
             {
                 int selectedrowindex = dgvOrder.SelectedCells[0].RowIndex;

                 DataGridViewRow selectedRow = dgvOrder.Rows[selectedrowindex];  

                  string orderlineFilter = Convert.ToString(selectedRow.Cells["columnname"].Value);           


                 (dgvOrderLine.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", orderlineFilter);
             }
         }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多