1

データバインディングなしで DataTable から行を追加する必要がある定義済みの DataGridView があります。プログラムでメソッドを使用しようとしてDataGridView.Rows.Add()いますが、DataTable の列名がわかりません。DataTable の列は DataGridView と同じ順序ですが、列名を知らなくても DataGridView に追加するにはどうすればよいですか?

4

3 に答える 3

14

DataGridViewは存在しますが、列がないとします。あなたはこれを行うことができます:

foreach (DataColumn dc in yourDataTable.Columns) {

     yourDataGridView.Columns.Add(new DataGridViewTextBoxColumn());

}

次に、行データを追加します。

foreach(DataRow dr in yourDataTable.Rows) {

     yourDataGridView.Rows.Add(dr.ItemArray);

}

ここで、デフォルトのテキストボックス列では不十分な場合は、別のセルテンプレートを使用して列を作成する必要があります。

于 2012-12-10T22:24:48.517 に答える
2

DataTableから列名を取得し、DataTable 行から DataGridView に行を追加したいようです

            DataTable myDataTable = new DataTable();
            //adding Columns
            myDataTable.Columns.Add("colInt", typeof(int));
            myDataTable.Columns.Add("colDate", typeof(DateTime));
            myDataTable.Columns.Add("colString", typeof(string));

            //adding Rows
            myDataTable.Rows.Add(1, DateTime.Now, "Hello World");

            //to get columns
            foreach (DataColumn col in myDataTable.Columns)
            {
                var c = new DataGridViewTextBoxColumn() { HeaderText = col.ColumnName }; //Let say that the default column template of DataGridView is DataGridViewTextBoxColumn
                dataGridView1.Columns.Add(c);
            }

            //to get rows
            foreach (DataRow row in myDataTable.Rows)
            {
                dataGridView1.Rows.Add(row[0], row[1], row[2]);
            }

とにかく近道がある dataGridView1.DataSource = myDataTable;

于 2012-12-10T23:12:56.943 に答える
2

DataGridView に行と列がない場合は、

yourDataGridView.DataSource = yourDataTable

すべての仕事をします。

DataGridView が既に何らかのデータソースにバインドされている場合 (DataTable を使用している場合は、DataSource が DataTable であると想定します)、

次に、yourDataTable を編集する必要があります -> 古い D​​ataTable から古い行を追加します (または古い DataTable にアクセスできない場合は DataGridView から)

foreach(DataRow dr in oldDataTable.Rows)
{
    yourDataTable.Rows.Add(dr);
}
yourDataGridView.DataSource = yourDataTable;

または oldDataTable を編集 -> yourDataTable から新しい行を追加します。

DataTable dtOld = (DataTable)yourDataGridView.DataSource;
foreach(DataRow yourdr in yourDataTable.Rows)
{
    dtOld.Rows.Add(yourdr);
}
yourDataGridView.DataSource = dtOld;
于 2012-12-10T23:10:14.837 に答える