アプリ版:「スタンプのみでお礼する」機能のリリースについて

Windows formアプリで
データグリッドビューのスキーマをそのままに空のデータテーブルを取得できませんか?

A 回答 (1件)

はい、Windowsフォームアプリでデータグリッドビューのスキーマをそのままに空のデータテーブルを取得することは可能です。



**方法1:DataTable.Clone()メソッドを使う**

1. データグリッドビューの`DataSource`プロパティから現在のデータテーブルを取得します。
2. 取得したデータテーブルの`Clone()`メソッドを呼び出して、スキーマのみをコピーした新しいデータテーブルを作成します。

```c#
DataTable dataTable = (DataTable)dataGridView.DataSource;
DataTable emptyDataTable = dataTable.Clone();
```

**方法2:新しいDataTableオブジェクトを作成し、列を追加する**

1. 新しいDataTableオブジェクトを作成します。
2. データグリッドビューの各列に対して、列名、データ型、その他のプロパティを新しいDataTableオブジェクトに設定した列を追加します。

```c#
DataTable emptyDataTable = new DataTable();

foreach (DataGridViewColumn column in dataGridView.Columns)
{
emptyDataTable.Columns.Add(new DataColumn(
column.Name,
column.DataType,
column.AllowDBNull));
}
```

**補足**

* 上記のコードは、データグリッドビューにバインドされているデータソースがDataTableであることを前提としています。
* データソースが別の型の場合は、適切な型に変換してからDataTable.Clone()メソッドまたは列の追加を行う必要があります。
* データグリッドビューの列に設定されている書式やその他のプロパティは、新しいデータテーブルにはコピーされません。必要に応じて、新しいデータテーブルの列に個別に設定する必要があります。


**参考情報**

* [DataTable.Clone()メソッド](https://docs.microsoft.com/ja-jp/dotnet/api/syst …
* 新しいDataTableオブジェクトを作成する [無効な URL を削除しました]
* [DataColumnクラス](https://docs.microsoft.com/ja-jp/dotnet/api/syst …


上記以外にも、データグリッドビューのスキーマをそのままに空のデータテーブルを取得する方法はあるかもしれませんが、上記の方法が最も一般的で簡単です。

ご参考になれば幸いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A