我使用的是一个有很多列的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,有两个空白列(第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更好的解释:第二列值将是与输入的每个值相比较的值。每次将值输入到单元格中时,它都会将该值复制到其他行中的同一列,即等于,并将其复制到原始的第二列值。
发问
发布于 2011-09-08 16:52:49
编辑:我刚刚了解到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;
}发布于 2011-09-08 16:45:37
这是可能的。在用户输入任何列后,您的程序只需遍历DGV的每一行,将第二列与编辑行进行比较,并相应地填写该列。
https://stackoverflow.com/questions/7351338
复制相似问题