私のプロジェクトでは、mvccontrib ( http://mvccontrib.codeplex.com ) を使用して、DataTable を Grid に渡してグリッドを自動生成したいと考えています。現在、Grid はこれをサポートしていません。
グリッドは IEnumerable(Of T) を受け取り、列を自動生成します。DataTableを渡すことでこれを達成できる方法はありますか。または、DataTable を IEnumerable(Of T) に変換するにはどうすればよいですか。私の DataTable は完全に動的です。設計時に列の数や列の名前がわかりません。DataTable 完全に動的な列数は固定されておらず、DataTable だけです。
どうすればこれを達成できますか?
つまり、Dynamic DataTable を IEnumerable(Of T) に変換したいと考えています。または、彼らのより良い方法です。
私は次の方法を試しました
1) 私が試した 1 つの方法は、.net 4.0 Dynamic、DynamicObject、および ExpandoObject を使用することです。ここに示すように動的クラスを作成しましたhttp://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.trygetindex.aspx。IEnumerable(Of SampleDynamicObject) を渡そうとしましたが、BuildColumns() メソッドは動的に追加されたプロパティを見つけることができません。
2) AutoGenerateColumns() メソッドを DataTable で動作するように変更する 2 番目の方法だと思いますが、Grid Get は IEnumerable(Of T) を使用して初期化し、メソッドのグリッドでのすべての呼び出しは IEnumerable(Of T) を使用しているため、不可能に見えます。したがって、DataTable を IEnumerable(Of T) に変換することになり、私の DataTable は動的です。設計時にそれらの構造がわからないので、特定のクラスを記述してオブジェクトを作成し、DataTable を IEnumerable(Of T) に変換することはできません。 .
これについて何か良い方法はありますか?
ありがとう
砂の