1

私は 2 つの DataGirdViews を持っています。右の DataGridView から行を選択し、左の DataGridView に渡したいと思います。 DatGridViews

右側には 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);
        }
    }

ありがとう。

4

2 に答える 2

1

同じスキーマを持つ 2 つの dataTables を単純に使用してこれらのグリッドをバインドし、次に DataTables の行を移動します。

このサンプルプロジェクトをチェックしてください。 http://www.zumodrive.com/share/ge0nZmRkMz

于 2012-06-01T19:26:27.123 に答える
0

データを含む列をコピーする概念を示す簡単な方法 -

dataGridView2.AutoGenerateColumns = false;
///... assuming that datagridview2 is already created with proper columns

dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = dataGridView2.DataSource;

    private void btnAdd_Click(object sender, EventArgs e)
            {

                for (int j = 0; j < this.dataGridView2.Columns.Count; j++)
                {
                    if (dataGridView2.Columns[j].Name == "Description")
                    {
                        this.dataGridView1.Columns.Add(this.dataGridView2.Columns[j].Clone() as DataGridViewColumn);
                    }
                }
            }
于 2012-06-01T20:58:58.473 に答える