我在一个表单中有两个datagridviews,它们有一些相似的列 当用户单击一个按钮时,第二个datagridview的第二列和第三列的selectedrow的数据应该转到第一个datagridview的第一列和第二列。 我使用
检索了数据string strppno = dataGridView2.SelectedCells[1].Value.ToString();
string strpartno = dataGridView2.SelectedCells[2].Value.ToString();
我可以使用
粘贴第二个datagridviewdataGridView1.Rows[0].Cells[1].Value = strppno;
dataGridView1.Rows[0].Cells[2].Value = strpartno;
我怎么也弄清楚如何循环它以便它可以多次使用或者多次使用。
有人可以帮帮我吗。我提前感谢您的任何建议。
第一次尝试。
for (int index = 0; index < dataGridView2.Rows.Count; index++)
{
int editIndex = dataGridView1.Rows.Add();
dataGridView1.Rows[editIndex].Cells[0].Value = dataGridView2.Rows[index].Cells[1].Value;
dataGridView1.Rows[editIndex].Cells[1].Value = dataGridView2.Rows[index].Cells[2].Value;
}
这将显示datagridview 2中的所有内容。我只想要选择的内容。
第二次尝试。
string strppno = dataGridView2.SelectedCells[1].Value.ToString();
string strpartno = dataGridView2.SelectedCells[2].Value.ToString();
for (int i = dataGridView2.SelectedRows.Count; i < dataGridView2.SelectedRows.Count + 1; i++)
{
dataGridView1.Rows[i].Cells[i].Value = strppno;
dataGridView1.Rows[i].Cells[i + 1].Value = strpartno;
}
dataGridView1.Rows.Add(dataGridView2.SelectedRows.Count);
}
这种带来我想要的东西但是在错误的单元格中加上循环继续运行。 :( 我一直在摆弄第二个循环,但无法得到预期的结果.. :(
答案 0 :(得分:1)
这样的事情对你有用:
private void dataGridView_SelectionChanged(object sender, EventArgs e) {
foreach (DataGridViewRow row in dataGridView.SelectedRows) {
string value1 = row.Cells[0].Value.ToString();
string value2 = row.Cells[1].Value.ToString();
//...
//also set the second datagrid from here too
}
}
因此,在您的示例中,您将只想使用第二个和第三个Cell值,并将它们分配给您的其他数据网格:)
作为旁注,为了使你的变量更具可读性等,你应该习惯使用camelCase,
即。
您的string strpartno
应该成为string strPartNo
以及正确命名dataGridViews / etc
从您的评论中,我意识到您的 insertInto 代码需要稍加修改:
目前,您放置它们:
dataGridView1.Rows[0].Cells[1].Value = strppno;
dataGridView1.Rows[0].Cells[2].Value = strpartno;
^
|
this will only place it into index 0 of the datagrid
所以,我建议首先
int count = ... //count number of rows in SecondDatagrid
然后做:
dataGridView1.Rows[count++].Cells[1].Value = strppno;
dataGridView1.Rows[count++].Cells[2].Value = strpartno;
^
|
this will only place it into next
available row of the datagrid
这样,您仍然会插入前两列,但不会覆盖当前存储的值。
答案 1 :(得分:0)
好的,所以我明白了...... 向dataGridView添加新行时会发生此问题。它不会在现有数据之后添加,而是在它之前添加。因此会发生异常。 以下解决方案以防万一其他人需要它。 :)
int count =0; // declare in public class
private void button3_Click(object sender, EventArgs e)
{
if (dataGridView2.SelectedRows.Count > 0)
{
dataGridView1.Rows.Add(dataGridView2.SelectedRows.Count); // add rows before entering data inside the new dataGridView.
}
foreach (DataGridViewRow row in dataGridView2.SelectedRows)
{
{
string value1 = row.Cells[0].Value.ToString();
string value2 = row.Cells[1].Value.ToString();
dataGridView1.Rows[count].Cells[0].Value = value1;
dataGridView1.Rows[count].Cells[1].Value = value2;
}
}
count =count + 1;
dataGridView2.ClearSelection(); // I used this because i have to work with 4 dataGridViews
}