I created a 2 dimensional array of strings and populated it. I try to bind it to a DataGrid control like so:
string[][] Array = new string[100][];
dataGridView.DataSource = Array;
Instead of seeing the contents of the array I see the following columns: Length, LongLenth, Rank, SyncRoot, IsReadOnly, IsFixedSize, IsSyncrhonized.
So instead of displaying the contents of my array, it displays the properties of the array. What did I do wrong?
When you allow the grid control to auto-generate columns, it will basically enumerate through the properties of that object and create a column for each one. It has no way to know that you want to display this as a grid of array values.
You'll need to create a new object (such as an enumerable list of a class) out of the array with the properties you want to bind to as columns. A quick way to do this would be to use an anonymous type, built using a LINQ query. Something like:
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();
Here, we're iterating through all 100 elements of the array. Each element is an array of 2 strings. We're creating an anonymous type out of those two strings. This type has two properties: Col1
and Col2
. Col1
will be set to array index 0, and Col2
will be set to array index 1. Then, we're building the grid to that enumeration of anonymous types. This will look something like:
You can of course define exactly how columns will be created by setting AutoGenerateColumns
to False, and populated the Columns
collection. This can be done declaratively as well within your ASPX file.
You need to convert your array to a datatable
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With