Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

A.com

dotNet: dataGridView + dataTable въпрос.

Препоръчан отговор


Останал съм с впечатлението, че имаше отделна тема за dotNet програмиране, но не я намирам.

Ето какво ме интересува. Свързано е с dotNet.

"system.windows.forms.dataGridView"  по подразбиране може да изобрази само 655 колони. Причината е, че свойството FillWeight за всяка отделна колона, пак по подразбиране, е със стойност 100. Когато се зададе създаване на 1000 колони например излиза подобно съобщение:

Цитат
.NET runtime exception: Sum of the columns' FillWeight values cannot exceed 65535.

Тази стойност 65535 е 2 на 16 степен(65536). Като се раздели на FillWeight = 100 и се получава това ограничение от 655 колони в dataGridView. Решението е да се зададе FillWeight = 1. И това решение работи.

Обаче има един сериозен проблем със скоростта на работа на dataGridView - бавно е при много колони и редове. И самото попълване на клетките с информация е бавно, и превъртането по вертикала и хоризонтала е бавно.

И този проблем си има решение. Може да се използва "system.Data.DataTable", която да се "напълни" с желаната информация и след това да се "подаде" на dataGridView.

("system.windows.forms.dataGridView").DataSource = "system.Data.DataTable".

По този начин зареждането на цялата информация е много по-бързо както и самата навигация след това.От тестовете, който направих, за да се създадат  102 колони и 80 реда с необходимата информация:

чист dataGridView - над 1 секунда

dataTable(("system.windows.forms.dataGridView").DataSource = "system.Data.DataTable") - под 0,2 секунди

dataGridView предлага доста възможности за персонализация - може да се променя цвета на цяла колона, на отделни клетки, да се замразяват и преоразмеряват колони, клетки да се задават като "read only" и т.н.

в dataTablе обаче така и не намирам как може да се правят подобни неща. Най-належащо ми е да мога да замразявам колони.

При dataGridVeiw е лесно: col.frozen=true и желаната колона не се скрива при хоризонтално превъртане на останалите колони.

Как да се направи същото, когато се използва dataTable?

Там колоните ги създавам по следният начин:

dataTable.columns.add "Text" (dotnet.getType "System.String")

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Добави ново...