我正在使用包含许多列的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列值。
答案 0 :(得分:1)
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的每一行,将第二列与编辑行进行比较,并相应填写该列。