Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
84 个问题
在我的 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 的图像:
Note:此问题总结整理于: Show total of datagridview selected rows in toolstrip label c#
首先,您可以使用 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();
}
测试结果:
如果回复有帮助,请点击“接受答案”并点赞。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。