Премини към съдържанието

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


Останал съм с впечатлението, че имаше отделна тема за 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")

 

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


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

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.