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

Поиск:

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


Бывалый
*


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

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



Старайтесь не использовать WindowsFormsHost, он очень медленный, даже на более простых компонентах. Попробуйте найти аналог на WPF.

Для того чтобы изменения на форме записывались в массив вам в бинденге необходимо указать:
UpdateSourceTrigger= PropertyChanged
и
Mode = TwoWay

Для того чтобы на форме отображались данные, вам необходимо унаследовать объект к которому производится биндинг от INotifyPropertyChanged, и кидать событие PropertyChanged с названием свойства которое будет меняться, в вашем случае K_add[i]
PM MAIL   Вверх
leon78
Дата 25.9.2012, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сделал две коллекции, одна рабочая, другая привязана к DataGrid. При нажатии "Save" параметры второй копируются в первую в цикле, при нажатии "Cancel" наоборот. Неужели это единственное решение?
PM MAIL   Вверх
Kefir
Дата 2.11.2012, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

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



Я точно не помню, но по-моему WPF DataGrid плюет на ваш UpdateSourceTrigger для любой колонки кроме DataGridTemplateColumn (ибо там вы все биндинги ручками привязываете напрямую в CellTemplate и CellEditingTemplate. Во всех остальных случаях если я не ошибаюсь DataGrid при генерации ячеек ставит UpdateSourceTrigger=LostFocus (или Explicit, который сам же и коммитит). Так что если хотите контролировать время коммита в сорс - используйте исключительно DataGridTemplateColumn, где вы сами даете темплейты для содержимого ячеек.

Вообще если вкратце - DataGrid это не панацея и не очень любит, когда его используют не так, как это задумывали авторы. Его основная суть - редактирование рядов. Когда вы клацаете по ячейке и что-нибудь редактируете - начинается формальный edit текущего ряда. Когда вы уходите с этого ряда происходит коммит данных обратно в сорс.

У вас же случай крайне странный (я слабо представляю зачем вам save/cancel для датагрида, но мало-ли какие бывают случаи). Для того чтобы осуществить ваш замысел с save/cancel вам надо условно говоря предотвращать коммит ряда (смотрите в сторону какого-нибудь RowEditEnding -  там вроде есть cancel, это в случае если вы таки используете стандартные колонки, а не templatecolumn) а также в сторону CommitEdit.

Также на всякий случай хочу заметить, что DataGrid поддерживает IEditableObject, так что это тоже может как-то облегчить задачу.
PM MAIL WWW Skype   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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