6

文字列の 2 次元配列を作成し、それを設定しました。次のように DataGrid コントロールにバインドしようとします。

string[][] Array = new string[100][];
dataGridView.DataSource = Array;

配列の内容を見る代わりに、Length、LongLenth、Rank、SyncRoot、IsReadOnly、IsFixedSize、IsSyncrhonized という列が表示されます。

したがって、配列の内容を表示する代わりに、配列のプロパティを表示します。私は何を間違えましたか?

4

4 に答える 4

3

グリッド コントロールが列を自動生成できるようにすると、基本的に、そのオブジェクトのプロパティを列挙し、それぞれの列を作成します。これを配列値のグリッドとして表示することを知る方法はありません。

列としてバインドするプロパティを使用して、配列から新しいオブジェクト (クラスの列挙可能なリストなど) を作成する必要があります。これを行う簡単な方法は、LINQ クエリを使用して構築された匿名型を使用することです。何かのようなもの:

string[][] Array = new string[100][];
for(int i = 0; i < 100; i++) // Set some values to test
   Array[i] = new string[2] { "Value 1", "Value 2" };

dataGridView.DataSource = (from arr in Array select new { Col1 = arr[0], Col2 = arr[1] });
Page.DataBind();

ここでは、配列の 100 個の要素すべてを繰り返し処理しています。各要素は 2 つの文字列の配列です。これら 2 つの文字列から匿名型を作成しています。この型には と の 2 つのプロパティがCol1ありCol2ます。 Col1配列インデックス 0 にCol2設定され、配列インデックス 1 に設定されます。次に、その匿名型の列挙に合わせてグリッドを構築します。これは次のようになります。

ここに画像の説明を入力

AutoGenerateColumnsもちろん、False に設定して列を作成する方法を正確に定義し、Columnsコレクションに入力することもできます。これは、ASPX ファイル内で宣言的に行うこともできます。

于 2013-03-01T20:30:54.773 に答える
2

配列をデータテーブルに変換する必要があります

string[][] Array = new string[100][];
DataTable dt= new DataTable();

int l= Array.length;

for(int i=0;i<l;i++) {
     dt.LoadDataRow(Array[i], true); //Pass array object to LoadDataRow method
}

dataGridView.DataSource = dt;
于 2013-03-01T20:33:22.097 に答える
0

あなたはこのようなことをすることができます

string[][] Array = new string[100][];

ArrayList arrList = new ArrayList();
for(int i=0;i<100;i++)
{
    arrList.Add(new ListItem(Array[i, 0], Array[i, 1]));
}
Grid2D.DataSource = arrList;
Grid2D.DataBind(); 

このリンクASP.Net での GridView への配列のバインドを参照してください。

于 2013-03-01T20:33:38.133 に答える