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