在工具条标签 c 中显示 datagridview 所选行的总计#

匿名
2024-03-27T09:41:45.8833333+00:00

在我的 win 表单应用程序中,我需要在 toolstrip 标签中显示我的 datagridview 所选行的总和,我目前能够计算总和并显示在我的数据网格视图中所有行的标签中。但我的要求是:

如果 datagridview 被筛选,则标签应仅显示该筛选行的总和。 如果用户在整个 datagridview 中选择某些行,则应仅显示所选行的总和。 请帮我如何做到这一点,这是我到目前为止的代码:

int A = 0, B = 0;
                for (A = 0; A < iP_SpoolsDataGridView.Rows.Count; ++A)
                {
                    B += Convert.ToInt32(iP_SpoolsDataGridView.Rows[A].Cells[20].Value);
                }
                Total.Text = B.ToString();

我的 Winform 的图像: mtf1y.png

Note:此问题总结整理于: Show total of datagridview selected rows in toolstrip label c#

开发人员技术 | Windows 窗体
开发人员技术 | Visual Studio | 其他
开发人员技术 | C#
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 48,681 信誉分 Microsoft 外部员工
    2024-03-27T11:20:10.2666667+00:00

    首先,您可以使用 BindingSource.Filter 属性来筛选具有 dateTimePicker 值的行。 然后,可以使用 DataGridView.SelectedRows 属性获取所选行的集合。 同时,您需要在 DataGridView.SelectionChanged 事件中运行这些内容,该事件在当前选择更改时发生。 这是我的测试代码,您可以参考。(在我的测试中,我计算列 Field2 的总和)

    public Form1()  
    {  
        InitializeComponent();  
        dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;  
    }  
      
    private void button1_Click(object sender, EventArgs e)  
    {  
        BindingSource bs = new BindingSource();  
      
        bs.DataSource = dataGridView1.DataSource;  
        bs.Filter = string.Format("Field2 >= #{0:MM/dd/yyyy}# And Field2 <= #{1:MM/dd/yyyy}#", dateTimePicker1.Value, dateTimePicker2.Value);  
      
    }  
      
    private void dataGridView1_SelectionChanged(object sender, EventArgs e)  
    {  
        int total = dataGridView1.SelectedRows.Cast<DataGridViewRow>().Sum(row => (int)row.Cells[1].Value);  
        label1.Text = total.ToString();  
    }  
    

    测试结果: 最好的问候, Daniel Zhang59028-121.gif


    如果回复有帮助,请点击“接受答案”并点赞。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    1 个人认为此答案很有帮助。
    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。