将值复制到其他单元格

时间:2011-09-08 16:23:46

标签: c# datagridview copy row

我正在使用包含许多列的DGV。某些列将为空白,用户需要手动填写列。

但是,一些空白列具有类似的值,需要填写。

例如,如果我有以下数据:

1 0201     0201R    8X2    1    1   FUJI    8MM
2 0402              8X2    1    1   FUJI    
3 0402              8X2    1    1   FUJI    
4 1650     1650C    8X2    1    1   FUJI    8MM
5 1650     1650C    8X2    1    1   FUJI    8MM

...因此,对于行 2和3 ,有2个空白列(第3列和第8列)

因此,如果用户在0402A中输入第2行第3列..它也将进入第3行第3列,因为0402的起始值匹配。此外,如果用户在值12MM中输入第2行第8列(如果该行匹配则将其放入第3行,第8列),则会发生同样的情况。 ..如下所示:

1 0201     0201R    8X2    1    1   FUJI    8MM
2 0402     0402A    8X2    1    1   FUJI    12MM     //notice that only '0402A' was entered one time.
3 0402     0402A    8X2    1    1   FUJI    12MM     //same with '12MM'
4 1650     1650C    8X2    1    1   FUJI    8MM
5 1650     1650C    8X2    1    1   FUJI    8MM

更好的解释: 第二列值将是与每个输入值进行比较的值。每次在单元格中输入值时,它都会将该值复制到等于的每个其他行中的相同列到原始第2列值。

问题

  • 这可能吗?我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

编辑:我刚才明白DGV == DataGridView ... :)我没有这方面的经验,但你应该做类似的事情......

private void dataGridView1_CellValueChanged( object sender, DataGridViewCellEventArgs e )
    {
        dataGridView1.CellValueChanged -= dataGridView1_CellValueChanged;
        DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
        string key = row.Cells[1].Value.ToString();

        foreach ( DataGridViewRow affected in dataGridView1.Rows)
        {
            if ( affected.Cells[1].Value.ToString( ) == key )
            {
                for ( int i=2; i < dataGridView1.Columns.Count; i++ )
                {
                    affected.Cells[i].Value = row.Cells[i].Value;
                }
            }
        }

        dataGridView1.CellValueChanged += dataGridView1_CellValueChanged;
    }

答案 1 :(得分:0)

这是可能的。用户输入任何列后,编程只需遍历DGV的每一行,将第二列与编辑行进行比较,并相应填写该列。