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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод диапазона строк в DataGridView 
:(
    Опции темы
bobadd
Дата 4.12.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема возникла следующая:
У меня DataGridView, чьим датасурсом является таблица на 130000 значений. 
Есть поле, которое задает сколько строчек видимо в данном DataGridView

Пробовал делать построчно 
Rows[i].Visible = false;

Но на это тратится ооочень много времени.

Возникает вопрос нет ли встроенного механизма вывода диапазона?
PM MAIL   Вверх
1stain
Дата 4.12.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



создай в таблице поле с автоинкрементом, не связанное с данными в базе (для нумерации строк). Добавляешь DataView, к нему как DataSource - таблицу. Для GridView DataSource ставишь DataView, в котором делаешь фильтр на номер автоинкрементного поля.
Этот метод и вообще про ADO.NET можешь прочитать в этой книге  Д.Сеппа Программирование на Microsoft ADO.NET 2.0


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
bobadd
Дата 4.12.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сейчас возникла проблемка, возможна весьма дилетантская, dataView.Table = T (где Т - моя таблица на 130000), вызывает exception 
"Exception has been thrown by the target of an invocation.".
У меня есть подозрение, что должна быть привязка к какой-то БД. У меня сейчас всё без БД сделано
PM MAIL   Вверх
1stain
Дата 4.12.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



покажи код создания DataView, привязки DataSource к DataGridView, установки RowFilter
и добавления столбцов в Table


Это сообщение отредактировал(а) 1stain - 4.12.2007, 19:14


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
bobadd
Дата 4.12.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

        static DataView DView = new DataView();
        static DataTable T = new DataTable();
....
....
        static BackgroundWorker DumpLoad = new BackgroundWorker();
....
....
        void DumpLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            switch (((string)e.Argument)[0])
            {
                case '1':
                    
                  //ЗАПОЛНЕНИЕ ТАБЛИЦЫ

                  if (((string)e.Argument)[1] == '1')
                    {
                        T.Columns.Add("Адрес");
                        T.Columns.Add("00");
                        T.Columns.Add("01");
                        T.Columns.Add("02");
                        T.Columns.Add("03");
                        T.Columns.Add("04");
                        T.Columns.Add("05");
                        T.Columns.Add("06");
                        T.Columns.Add("07");
                        T.Columns.Add("08");
                        T.Columns.Add("09");
                        T.Columns.Add("0A");
                        T.Columns.Add("0B");
                        T.Columns.Add("0C");
                        T.Columns.Add("0D");
                        T.Columns.Add("0E");
                        T.Columns.Add("0F");
                        T.Columns[0].ReadOnly = true;
                    }

                   for (int i = 1; i <= 16; i++)
                    {
                        T.Columns[i].MaxLength = 2;
                        T.Columns[i].DefaultValue = "FF";
                    }

                    int k;

                    for (int i = 0; i <= 131071; i++)
                    {
                        if (i%100 == 0) Delay(1);
                        k = 0x10 * i;
                        T.Rows.Add(NullAdd(k.ToString("X"), 6));
                    }
                    break;
.......
        }
                e.Result = T;
     }
.......
        void DumpLoad_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            DataTable T = (DataTable)e.Result;
            DView.Table = T;
            Dump2.DataSource = DView;         // Вот тут возникает Exception
            Dump2.Visible = true;
            
            Dump2.Columns[0].Width = 50;
            for (int i = 1; i <= 16; i++)
            {
                Dump2.Columns[i].Width = 25;
            }
            tabControl1.Enabled = true;

            DumpLoad.Dispose();
        }


Пока нет фильтрации никакой. Раньше было напрямую

Код

          DataTable T = (DataTable)e.Result;
            Dump2.DataSource = T;
            Dump2.Visible = true;


И всё работало.
PM MAIL   Вверх
1stain
Дата 4.12.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



попробуй так
Код

        DataView DView;
....
if (((string)e.Argument)[1] == '1')
                    {
DataColumn col = T.Columns.Add("RowNumber", typeof(int));
col.AutoIncrement = true;
col.AutoIncrementSeed = 0;
col.AutoIncrementStep = 1;
T.Columns.Add("Адрес");

....


 void DumpLoad_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            DataTable T = (DataTable)e.Result;
            DView = new DataView(T);
DView.RowFilter = "RowNumber > 10 AND RowNumber < 20";
Dump2.AutoGenerateColumns = true;
Dump2.DataSource = DView;         // Вот тут возникает Exception




--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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