0

C#にギザギザの文字列配列があります。

配列の内容を表示できるように、DataGridにバインドするにはどうすればよいですか?

現在、DataGridには、配列の内容の代わりに、「長さ」、「長さ」、「ランク」、「SyncRoot」などの列が表示されます。基本的に、配列の内容ではなく、配列のプロパティです。配列。

私のコード:

string[][] jagged = new string [100][];

//...jagged array is populated...

dataGridView1.DataSource = jagged;  
4

2 に答える 2

1

これは、String []でこれを行わなかったので、次のように試すことができる例ですが、アイデアを得ることができます

//
// 1. Create two dimensional array
//

const int  dim = 1000;

double[,]  array = new double[dim,dim];

Random ran = new Random();
for(int r = 0; r < dim; r++)
{
    for(int c = 0; c < dim; c++)
    {
        array[r,c] = (ran.Next(dim)); // fill it with random numbers.
    }
}

// 2. Create ArrayDataView class in which 
// constructor you pass the array 
// and assign it to DataSource property of DataGrid. 

 dataGrid1.DataSource = new ArrayDataView(array);

String [] []の場合、ここに例があります

string[][] arr = new string[2][];

arr[0] = new String[] {"a","b"};
arr[1] = new String[] {"c","d"};

DataGrid1.DataSource = arr[0];
DataGrid1.DataBind();//The result is: a,b in datagrid

LinQを使用してこれを見てください

List<string> names = new List<string>(new string[]
{
    "John",
    "Frank",
    "Bob"
});

var bindableNames =
    from name in names
    select new {Names=name};

dataGridView1.DataSource = bindableNames.ToList();

マルチデンショナルアレイにLINQを使用する

string[][] stringRepresentation = ds.Tables[0].Rows  
    .OfType<DataRow>()  
    .Select(r => ds.Tables[0].Columns  
        .OfType<DataColumn>()  
        .Select(c => r[c.ColumnName].ToString())  
        .ToArray())  
    .ToArray();
于 2012-09-28T18:08:38.680 に答える
0

現在受け入れられている回答とコメントでMichaelPerrenoudが述べているように、MihailStefanovのArrayDataViewクラスを使用してこのバインディングを実現できます。ただし、彼の元のコードは元々、多次元配列でのみ機能するように考案されていました。それ以来、彼のコードをジャグ配列でも機能するように変更し、Accord.NETフレームワークで利用できるようにしました。

これを行うためにフレームワーク全体を使用する必要はありません。ここで利用可能な更新されたクラスを使用するだけです。これらのクラスをプロジェクトに組み込んだ後、あなたがしなければならないのは

dataGridView.DataSource = new ArrayDataView( yourArray );

この説明がお役に立てば幸いです。

私が述べたように、私はAccord.NETの作者ですが、元のクレジットは実際にはStefanovにあります。

于 2013-01-01T21:38:45.500 に答える