私は 2 つの DataGirdViews を持っています。右の DataGridView から行を選択し、左の DataGridView に渡したいと思います。
右側には 4 つの列があります。左のグリッドでは、新しい列を 1 つだけ定義し、この列のみを表示したいと考えています。この列は、右側の列の 1 つ、たとえば column[2] です。行を渡す方法がわかりません。
私の不完全なコード(おそらくエラー、未テスト):
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
if (dgRight.CurrentRow != null)
{
DataRowView currentDataRowView = (DataRowView)dgRight.CurrentRow.DataBoundItem;
foreach (DataGridViewRow row in dgRight.Rows)
{
DataGridViewCheckBoxCell check = row.Cells[0] as DataGridViewCheckBoxCell;
if (check.Value != null)
{
if ((bool)check.Value)
{
//this row has a checkBox set to true (tick is added)
//add this row to dataTable ...
DataRow myRow = (row.DataBoundItem as DataRowView).Row;
DataRow dr = dt.NewRow();
if (!dt.Columns.Contains("ID"))
{
datatableRight.Columns.Add("ID", typeof(int));
datatableRight.Columns.Add("col1", typeof(string));
datatableRight.Columns.Add("col2", typeof(string));
datatableRight.Columns.Add("col3", typeof(string));
DataColumn[] keyColumns = new DataColumn[1];
keyColumns[0] = datatableRight.Columns["ID"];
datatableRight.PrimaryKey = keyColumns;
}
dr["ID"] = myRow["ID"];
dr["col1"] = myRow["col1"];
dr["col2"] = myRow["col2"];
dr["col3"] = myRow["col3"];
if (!datatableRight.Rows.Contains(dr[0]))
{
datatableRight.Rows.Add(dr);
}
}
}
}
dgLeft.DataSource = datatableRight;
datLeft = datatableRight.Copy();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
ありがとう。