DataGridView
のすべてのデータを対応するDataTable
に変換するルーチンがあります。このメソッドを拡張して、DataGridView
の選択範囲だけを変換する機能を組み込みたいと考えています。私は明らかに基本的な論理if (bIsSelection) /*Do stuff*/ else /*Do other stuff*/
を使ってこれを行うことができますが、私はここでジェネリックを使いたいと思います。問題は、完全なDataGridView
の範囲がDataGridViewColumnCollection
であり、選択された範囲がDataGridViewSelectedColumnCollection
であり、C#が2つの間の変換を気にしていないように見えるか、またはジェネリックの場合に暗黙の型指定が可能であるということです。ジェネリックスを使用して明示的キャストを避ける方法
私のコードの最初の部分は
public static DataTable BuildDataSetFromDgv(DataGridView _dataGridView,
string strTabName)
{
DataTable dt = new DataTable();
dt.TableName = strTabName;
foreach (DataGridViewColumn col in _dataGridView.Columns)
dt.Columns.Add(col.DataPropertyName, col.ValueType);
だったと私は原因暗黙の型変換に
動作しませんpublic static DataTable BuildDataSetFromDgv<T>(DataGridView _dataGridView,
string strTabName, ICollection<T> _columnColl, ICollection<T> _rowColl)
{
DataTable dt = new DataTable();
dt.TableName = strTabName;
//foreach (DataGridViewColumn col in _dataGridView.Columns)
foreach (DataGridViewColumn col in _columnColl)
dt.Columns.Add(col.DataPropertyName, col.ValueType);
を試みた、と_columnColl
_columnColl as DataGridView[Selected]ColumnCollection
に敗北目的を変更しています。
この場合、ジェネリックでこの作業を行うにはどうすればよいですか?
お時間をいただきありがとうございます。
注:これらのコレクションはどちらも、「ICollection」を実装しています。 –
ありがとうございます。私はこれをフライに入力しました... – MoonKnight