Итак, я пытаюсь передать данные из DataGridView
в другой, используя CheckBox
в столбце, чтобы выбрать столбцы, которые я хочу передать. Но с кодом, который я уже получил, я могу передать один. Я хочу выбрать еще один и передать его другому DataGridView
.Передайте данные datagridview другому datagridview в C#
Это код, у меня есть:
private void cmdCopy_Click(object sender, EventArgs e)
{
frmRecycle frm = new frmRecycle();
frm.dataGridView2.Rows.Clear();
foreach (DataGridViewRow dtrow in dataGridView1.Rows)
{
if ((bool)dtrow.Cells[0].Value == true)
{
int n = frm.dataGridView2.Rows.Add();
frm.dataGridView2.Rows[n].Cells[0].Value = true;
frm.dataGridView2.Rows[n].Cells[1].Value = dtrow.Cells[1];
frm.dataGridView2.Rows[n].Cells[2].Value = dtrow.Cells[2].Value.ToString();
frm.dataGridView2.Rows[n].Cells[3].Value = dtrow.Cells[3].Value.ToString();
frm.dataGridView2.Rows[n].Cells[4].Value = dtrow.Cells[4].Value.ToString();
frm.dataGridView2.Rows[n].Cells[5].Value = dtrow.Cells[5].Value.ToString();
frm.dataGridView2.Rows[n].Cells[6].Value = dtrow.Cells[6].Value.ToString();
frm.dataGridView2.Rows[n].Cells[7].Value = dtrow.Cells[7].Value.ToString();
frm.dataGridView2.Rows[n].Cells[8].Value = dtrow.Cells[8].Value.ToString();
frm.dataGridView2.Rows[n].Cells[9].Value = dtrow.Cells[9].Value.ToString();
con = new SqlConnection(cs.DBConn);
con.Open();
string queryInsert = @"INSERT INTO SentRecyle(FileName, TypeFile, SizeFile, PathFile,
Created, Modified, Access, PcName)
VALUES (@FileName, @TypeFile, @SizeFile, @PathFile,
@Created, @Modified, @Access, @PcName)";
cmd = new SqlCommand(queryInsert);
cmd.Connection = con;
cmd.Parameters.Add(new SqlParameter("@FileName", SqlDbType.NVarChar, 150, "FileName"));
cmd.Parameters.Add(TypeFileSqlParameter("@TypeFile", SqlDbType.NVarChar, 150, "TypeFile"));
cmd.Parameters.Add(new SqlParameter("@SizeFile", SqlDbType.Int, 20, "SizeFile"));
cmd.Parameters.Add(new SqlParameter("@PathFile", SqlDbType.NVarChar, 150, "PathFile"));
cmd.Parameters.Add(new SqlParameter("@Created", SqlDbType.NVarChar, 150, "Created"));
cmd.Parameters.Add(new SqlParameter("@Modified", SqlDbType.NVarChar, 150, "Modified"));
cmd.Parameters.Add(new SqlParameter("@Access", SqlDbType.NVarChar, 150, "Access"));
cmd.Parameters.Add(new SqlParameter("@PcName", SqlDbType.NVarChar, 50, "PcName"));
cmd.Parameters["@FileName"].Value = dtrow.Cells[2].Value.ToString();
cmd.Parameters["@TypeFile"].Value = dtrow.Cells[3].Value.ToString();
cmd.Parameters["@SizeFile"].Value = dtrow.Cells[4].Value.ToString();
cmd.Parameters["@PathFile"].Value = dtrow.Cells[5].Value.ToString();
cmd.Parameters["@Created"].Value = dtrow.Cells[6].Value.ToString();
cmd.Parameters["@Modified"].Value = dtrow.Cells[7].Value.ToString();
cmd.Parameters["@Access"].Value = dtrow.Cells[8].Value.ToString();
cmd.Parameters["@PcName"].Value = dtrow.Cells[9].Value.ToString();
cmd.ExecuteNonQuery();
con.Close();
con = new SqlConnection(cs.DBConn);
con.Open();
int AffectedRows = 0;
string queryDelete = "DELETE FROM InfoFile WHERE FileName='" + dtrow.Cells[2].Value.ToString() + "'";
cmd = new SqlCommand(queryDelete);
cmd.Connection = con;
AffectedRows = cmd.ExecuteNonQuery();
if (AffectedRows > 0)
{
ShowDataGridView();
}
else
{
MostrarDataGridView();
MessageBox.Show("There are no records!", "Try again", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
}
}
У меня есть это на моем DataGridView
:
if ((bool)dataGridView1.SelectedRows[0].Cells[0].Value == false)
{
dataGridView1.SelectedRows[0].Cells[0].Value = true;
}
else
{
dataGridView1.SelectedRows[0].Cells[0].Value = false;
}
Я хотел бы, чтобы была возможность пройти более одной строки. Вы, ребята, знаете, как я могу это решить?
Используйте источник данных и отправить строк данных или использовать фильтр, где проверяются/помечено/выбранные строки отображаются в другом – Plutonix
мы можем говорить об этом через чат? @Plutonix – LeugimSnitram