【问题标题】:Link multiple Datagridviews in one form C#以一种形式链接多个 Datagridviews C#
【发布时间】:2016-06-04 00:11:33
【问题描述】:

我在 C# 中创建了一个表单,其中包含来自三个 sql 表的三个数据网格视图。一个字段对所有网格视图都是通用的。如果我在 gridview 中自动选择一个复选框,则应选择公共字段值相等的其他 gridview 复选框列。第一个网格视图包含itmcod、title、procod、typcod这四个字段。第二个包含 title,procod,defalt,第三个包含 title,typcod,defalt, procod, title2。值过程对于所有三个数据表都是通用的。我在 gridview 2 中自动选择一行 gridview 1 & 3 应该选择 procod 值相等的所有值。我该怎么做呢

【问题讨论】:

  • 你尝试了什么?提示:查看正确事件的 SelectionChanged 和各种 SelectedXXX 属性!

标签: c# visual-studio datagridview


【解决方案1】:

如果您只想选择整行,那么我建议您将.SelectionMode 设置为FullRowSelect 并将MultiSelect 设置为false,如果您想一次只关注一行。然后,您可以在第一个 datagridview 的 SelectionChanged 事件中实现您想要的:

void DataGridView1SelectionChanged(object sender, EventArgs e)
    {
        //If MultiSelect = true
        //foreach(DataGridViewRow row in dataGridView1.SelectedRows)
        //If multiselect = false
        using(DataGridViewRow row = dataGridView1.CurrentRow)
        {
            foreach(DataGridViewRow rs in dataGridView2.Rows.Cast<DataGridViewRow>().Concat(dataGridView3.Rows.Cast<DataGridViewRow>()).Where(r => !r.IsNewRow).Where(r => r.Cells["procod"].Value.ToString().Trim() != String.Empty).Where(r => r.Cells["procod"].Value.ToString() == row.Cells["procod"].Value.ToString()))
                rs.Selected = true;
        }
    }

这只是循环其他两个数据网格视图中的行,它们与“procod”列中的单元格具有相同的值。

【讨论】:

  • 它的工作很棒,我需要更改此代码,因为我在 datagridview 中选择了一个复选框,因此其他进程应该选择其他 datagridviews 中的行并选中复选框。我是 c# 的新手,所以你能帮我做这件事吗
  • 我几天都不会在我的电脑上,所以我只能给你指示:如果你的代码只有在选中复选框时才选择行,那么你应该改变foreach 循环体中的代码。您要做的是查找该行中的哪些列具有 bool 类型的数据类型,并将该单元格的值设置为 true。您可以在rs.Cells.Cast&lt;DataGridViewCell&gt;() 上使用IndexOf,如果索引不是-1,只需将具有该索引的单元格的值设置为true。 :)
  • 此代码正在选择“procod”值相等的其他网格视图中的行。如果我们取消选择一行,那么应该取消选择已经选择的行。我怎么能用这段代码做到这一点
  • 只需在 SelectionChanged 事件开始时为机器人网格视图添加 .ClearSelection
猜你喜欢
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
相关资源
最近更新 更多