Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление столбца в DataTable, как добавить несколько столбцов 
:(
    Опции темы
kuller
Дата 17.11.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Здравствуйте!!!
Подскажите, как можно в DataTable добавлять поочередно определенное количество столбцов.
Т.е. я создаю DataTable, а затем в цикле создаю в DataTable СТОЛБЦЫ (название и тип присваиваю при создании) , а вот занести в эти столбцы данные, че то у меня не получается.

Код

DataTable viborkiTable = new DataTable();
while (reader.Read())
            {
              viborkiTable.Columns.Add(reader.GetString(2), System.Type.GetType("System.Single"));
              for (int i = 0; i < reader.GetInt32(1); i++)
                {
                  вот тут я подразумеваю добавление данных во вновь созданный столбец
                 }
              }
reader.Close();
            dataGridView1.DataSource = viborkiTable;


Заранее спасибо!!!
PM MAIL   Вверх
mrbrooks
Дата 17.11.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 17
Всего: 306



Цитата(kuller @  17.11.2010,  10:45 Найти цитируемый пост)
Здравствуйте!!!

Салют.

Цитата(kuller @  17.11.2010,  10:45 Найти цитируемый пост)
Т.е. я создаю DataTable, а затем в цикле создаю в DataTable СТОЛБЦЫ (название и тип присваиваю при создании) , а вот занести в эти столбцы данные, че то у меня не получается.


твой подход несколько странный. если уж у тебя есть DataReader - то ты без проблем его можешь загрузить в DataTable
Код

DataTable viborkiTable = new DataTable("Fuck");
viborkiTable.Load(reader);
dataGridView1.DataSource = viborkiTable;


Однако как я понимаю в самом reader у тебя избыточные данные (столбцы - которые не желательно отображать). Выхода здесь два - либо отключить отображение поля при загрузке в DataGridView, либо вообще не возвращать его в sql-запросе. 
PM MAIL   Вверх
kuller
Дата 17.11.2010, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



mrbrooks, тут не все так просто, в DataReader я из БД получаю названия столбцов, количество элементов в этих столбцах и адрес начала последовательности в двоичном файле. А вот затем мне необходимо двигаясь по DataReader создавать столбцы с названиями и считывать данные с файла и заносить их в созданные столбцы, а столбцы добавлять в DataTable, а вот только потом уже DataTable в качестве источника данных передать dataGridView.
Вот как то так)
PM MAIL   Вверх
mrbrooks
Дата 17.11.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 17
Всего: 306



Цитата(kuller @  17.11.2010,  15:38 Найти цитируемый пост)
mrbrooks, тут не все так просто, в DataReader я из БД получаю названия столбцов, количество элементов в этих столбцах и адрес начала последовательности в двоичном файле. А вот затем мне необходимо двигаясь по DataReader создавать столбцы с названиями и считывать данные с файла и заносить их в созданные столбцы, а столбцы добавлять в DataTable, а вот только потом уже DataTable в качестве источника данных передать dataGridView.
Вот как то так) 

не совсем понял - информация об отображаемой таблице формируется не на конкретной таблице БД, а по информации хранящейся в ней?
PM MAIL   Вверх
kuller
Дата 17.11.2010, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



mrbrooks, именно, в БД хранится только информация о структуре. Ну т.е. есть набор последовательностей чисел, принажлежащих разным входным файлам, в БД хранится описание этих входных данных, а сами числа хранятся в двоичном файле (туда они попадают после конвертации и разбора структуры входного файла), считывая из которого по полученным данным из БД числа мне необходимо отобразить на экране в виде dataGridView.
Если добавлять данные построчно, то проблем нет (т.е. сразу 1 строка для всех стлолбцов потом другая и т.д.), но так мне не подходит, т.к. данные в файле храняться в виде последовательностей, которые должны отражать столбцы.

PM MAIL   Вверх
mrbrooks
Дата 17.11.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 17
Всего: 306



kuller, а. понятно. выходит что, в одном кортеже хранится инфа об уникальной таблице и ее фарша.
Ну дружище - одной DataTable ты здесь не обойдешься. Для начала тебе необходим DataSet. В нем ты как бэ  инкапсулируешь уже массив DataTable. Далее уже заполняешь инфу из своего бинарного файла. При этом надо его естественно сначала кэшировать, а далее парсить.

Делай типа этого:

Код

DataSet ds = new DataSet();

while (reader.Read())
{
   var tbl = ds.Tables.Add();
   //формируешь поля
   tbl.Columns.Add(reader.GetString(n), typeof(int));
   tbl.Columns.Add(reader.GetString(n+1), typeof(double));
   //после того как таблица создана читаешь свое бинарное поле 
   //и заполняешь им тело таблицы
}
reader.Close();
 

PM MAIL   Вверх
kuller
Дата 18.11.2010, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Может кто то знает, какое максимальное количество строк и столбцов можно загрузить в dataGridView (а то вроде бы программа работала нормально, поробывал загрузить таблицу размером 200 столбцов по 10000 строк и начались непонятные ошибки).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1078 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.