вопрос по Datagridview

Тема в разделе ".NET", создана пользователем Eugene, 29 ноя 2006.

Статус темы:
Закрыта.
  1. Eugene

    Eugene Гость

    Вопрос: есть таблица, в которой одно из полей является combobox'ом.
    В этой таблице есть поле TYPE_ID, кот. связано с другой таблицей по полю id.
    Вторая таблица состоит из двух полей: id и name. Значения combobox'а
    берутся из этой таблицы из поля name. Выбранным элементом считается тот,
    для которого выполняется условие: id=TYPE_ID. Вроде все просто.
    Вот так я это решил.
    С#:
    // заполнение таблицы
    DataGridView dataGridView1 = new DataGridView();
    dataGridView1.Dock = DockStyle.Fill;
    DataTable dataTable = new DataTable();
    oracleDataAdapter1.Fill(dataTable);
    dataGridView1.DataSource = dataTable;
    Controls.Add(dataGridView1);

    // заполнение combobox'ов
    DataGridViewComboBoxColumn comboboxColumn = new DataGridViewComboBoxColumn();
    comboboxColumn.HeaderText = "Combo";
    comboboxColumn.DisplayMember = "name";
    comboboxColumn.ValueMember = "id";
    comboboxColumn.DataPropertyName = "TYPE_ID";
    DataTable table2 = new DataTable();
    oracleDataAdapter2.Fill(table2);
    comboboxColumn.DataSource = table2;
    dataGridView1.Columns.Insert(0, comboboxColumn);

    Этот код действительно у меня работает, но не совсем так как мне бы хотелось.
    Не устраивает производительность. Особенно это становится заметным, когда
    достаточно много элементов содержится в combobox'е. Таблица начинает на
    экране построчно очень долго строится и навигация по таблица очень медленная.
    Подскажите, как увеличить производительность.
     
  2. Electro

    Electro Гость

    А почему не используешь DataSet ?
     
  3. Real-Mulik

    Real-Mulik Гость

    Тормоз идет из-за этой строчки скорее всего

    Код (Text):
    DataTable table2 = new DataTable();
    Правдо несовсем понятно какой именно запрос oracleDataAdapter2 филит в таблицу table2. Однако Тормоз идет, из-за того что для каждой строки создается отдельный экземпляр объекта в опреативке. Из-за это чувствительно сьедается память. Выхода как всегда 2:

    1. Можно не объявлять новый объект table2 каждый раз при заполнении, а объявит его где-нить вверху (глобально), а потом по мере необходимости очищать и заполнять(филить) заново.

    2. Так же вверху в оперативку можно вогнать всю таблицу(профилить) из которой будет заполняться combo. А далее использовать метод Select объекта table2. Сэкономишь время и место.
     
Загрузка...
Похожие Темы - вопрос по Datagridview
  1. ApplePen
    Ответов:
    0
    Просмотров:
    77
  2. gURaBA_N
    Ответов:
    3
    Просмотров:
    94
  3. kartaman
    Ответов:
    0
    Просмотров:
    128
  4. Peter
    Ответов:
    4
    Просмотров:
    524
  5. di0d_
    Ответов:
    1
    Просмотров:
    441
Статус темы:
Закрыта.

Поделиться этой страницей