Заполнение dataGridView данными из array - вопрос №150184

Здравствуйте! Помогите пожалуйста советом. Как заполнить dataGridView из array, если элементы массива не одного типа.

У меня есть данные хранящиеся в бинарном файле в определенной структуре. При считывании файла получаю структуру данных и сами данные. Записываю в массив, который потом передаю как источник данных в dataGridView

ArrayList array = new ArrayList();

for (int i = 0; i != countRecords; i++)
{

       ArrayList arrayRow =new ArrayList();

       for (int j = 0; j != countFields; j++)
       {

            // получаю значение полей и записываю в массив строки (тут может использовать какую то структуру, которую определить ранее, но я такое не использовал ранее)
            arrayRow.Add(value);
       }
       array.Add(arrayRow);
}

tf.dataGridView1.DataSource = array;

В результате строки добавляются, но данные не передаются.

Как разумнее поступить в данной ситуации?



Дополнение автора от 27.11.11 22:17:57

Колонки определяются в цикле после считывания структуры:

           foreach (Field field in arrayFields)
           {
               tf.dataGridView1.Columns.Add(field.fieldName, field.fieldName);
           }

В результате получаю dataGridView своей структуры + 2 колонки свойств массива array «Capacity»,«Count», где заполнены только последние поля.




25.11.11
4 ответа

Лучший ответ по мнению автора

а колонки данных как добавляются?

созданы в дизайнере? или автоматически?

если автоматически (а для выбраного Вами способа назначения источника данных следует выбирать автоматическую генерацию) — проблем быть не должно. соответственно в дизайнере колонки создавать не надо вообще.

при автоматическом добавлении, колонки источника данных будут добавлены к созданным в дизайнере. тогда они могут быть просто не видны на форме, но доступны при горизонтальной прокрутке в право

см свойство DataGridView.AutoGenerateColumns

27.11.11
Лучший ответ по мнению автора

Другие ответы

я говорю о колонках DataGridView

их не надо трогать ВООБЩЕ

установите свойство DataGridView.AutoGenerateColumns = true

потом

dataGridView1.DataSource = array

все. больше ни чего не надо делать

27.11.11

если не поможет пришлите код.

у меня сейчас есть время, можете в чат стукнуть

27.11.11

for (int i = 0; i != countRecords; i++)
{

...

}

знаете почему так нельзя делать?

почему везде рекомендуется

for (int i = 0; i < countRecords; i++)
{

...

}

представте что в теле цикла довольно много строк сложного кода и часто используется значение i

и однаж ды кто то вносит изменение такого вида

for (int i = 0; i != countRecords; i++)
{

...

i = x // где x имеет значение больше countRecords

...

}

тогда Вы получите «вечный» цикл, по крайней мере очень большой и может с каким ни будь исключением

27.11.11
Посмотреть всех экспертов из раздела Технологии > .Net/C#
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store