Старый 30.08.2010, 18:01   #1   
FatSince2010
 
Аватар для SS20
 
Сообщений: 1,385
Регистрация: 07.07.2007
Возраст: 41
Записей в дневнике: 8

SS20 вне форума Не в сети
Обновление DataGridView

Подскажите, кто знает, по C#.

Есть DataGridView, привязанная через bindingSource к таблице из dataContext.

Добавляю в соответствующую таблицу dataContext новую сущность, вызываю InsertOnSubmit(), потом SubmitChanges() для dataContext. После этого таблица в dataContext содержит нужную запись, DataSourceChanged у DataGridView срабатывает, но изменения не отображаются, хоть ты тресни.

Вызывал EndEdit, Refresh и т.д. на DataGridView, ResetBindings на bindingSource - не обновляется. Причем dataContext у обоих правильная, новая запись есть, в базу тоже записалась.

WTF?!
  Ответить с цитированием
Старый 30.08.2010, 22:15   #2   
Форумец
 
Аватар для Spectator
 
Сообщений: 44,494
Регистрация: 27.05.2003
Возраст: 48

Spectator вне форума Не в сети
Они не отображаются СРАЗУ или вообще?
Переключись на другое окно, переключись обратно.
Если исправится, то надо делать связку InvalidateRect/UpdateWindow.
Если нет, то что-то с драйвером (не совсем корректно, но понято) Б.Д.
Пройдись после обновления программно по таблице (в контроле), есть ли новая запись в ней?
Создай обработчик на Insert / Update в контроле, посмотри, срабатывает ли он.
Попробуй другой драйвер БД)
Это не WTF, нормальная ситуация)))
  Ответить с цитированием
Старый 30.08.2010, 22:35   #3   
Пессимист
 
Аватар для dn2k4
 
Сообщений: 618
Регистрация: 22.07.2004

dn2k4 вне форума Не в сети
Цитата:
Сообщение от Spectator Посмотреть сообщение
Это не WTF, нормальная ситуация)))
Эээ... это на вашем ассемблере с оптимизацией всегда так? =)

Датасоурс-то для грида небось через линкю ручками сделал? Дык посмотри в каком оно состоянии и перезапроси. Ну или определи там ивент что-ли какой-нить =)
  Ответить с цитированием
Старый 31.08.2010, 07:34   #4   
FatSince2010
 
Аватар для SS20
 
Сообщений: 1,385
Регистрация: 07.07.2007
Возраст: 41
Записей в дневнике: 8

SS20 вне форума Не в сети
dn2k4, в dataSource новый элемент есть, но в List для bindingSource не появляется. При попытке добавить элемент в List вручную выскакивает исключение, что он там уже есть. Но его там нет) Хотя, если обработать исключение, в гриде становится все нормально.

Но, клянусь, господа, выглядит такой код ужасно, просто ужасно! )))


Spectator, вообще. Как вызывать перерисовку контрола, я знаю.
  Ответить с цитированием
Старый 31.08.2010, 23:46   #5   
Форумец
 
Аватар для Spectator
 
Сообщений: 44,494
Регистрация: 27.05.2003
Возраст: 48

Spectator вне форума Не в сети
Цитата:
Сообщение от dn2k4 Посмотреть сообщение
Эээ... это на вашем ассемблере с оптимизацией всегда так? =)
??? Если у вас всегда все работает - значит вы ничего не делаете.

Цитата:
Сообщение от SS20 Посмотреть сообщение
Spectator, вообще. Как вызывать перерисовку контрола, я знаю.
Ищи в контроле (DataGridView) методы со словом Update, только не а-ла UpdateWindow, а более другие.

Ну и да - карфаген должен быть разрушен. в смысле бросайте пользоваться этим глюкалом)))
  Ответить с цитированием
Старый 01.09.2010, 00:40   #6   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,334
Регистрация: 17.12.2006
Возраст: 38

X0R вне форума Не в сети
Цитата:
Сообщение от Spectator Посмотреть сообщение
Ищи в контроле (DataGridView) методы со словом Update, только не а-ла UpdateWindow, а более другие.
прекращай уже ламерствовать. При изменении данных в контроле, он сам вызывает перерисовку.
Цитата:
Сообщение от Spectator Посмотреть сообщение
Ну и да - карфаген должен быть разрушен. в смысле бросайте пользоваться этим глюкалом)))
ты на своем ассемблере будешь аналог одного только DataGridView год писать...
  Ответить с цитированием
Старый 01.09.2010, 08:33   #7   
Форумец
 
Аватар для Spectator
 
Сообщений: 44,494
Регистрация: 27.05.2003
Возраст: 48

Spectator вне форума Не в сети
Цитата:
Сообщение от X0R Посмотреть сообщение
прекращай уже ламерствовать. При изменении данных в контроле, он сам вызывает перерисовку.
Я не ламерствую. Речь идет вроде о таблице. Так что узнает он об изменениях или нет - зависит от способа изменения данных. Если они идут обычным путем через общий DataSet - узнает. А если иным путем - нет.

Цитата:
Сообщение от X0R Посмотреть сообщение
ты на своем ассемблере будешь аналог одного только DataGridView год писать...
Я пишу не на ассемблере 99.9% кода))) И DataGridView на нем писать никто и не подумает.
  Ответить с цитированием
Старый 02.09.2010, 10:32   #8   
FatSince2010
 
Аватар для SS20
 
Сообщений: 1,385
Регистрация: 07.07.2007
Возраст: 41
Записей в дневнике: 8

SS20 вне форума Не в сети
Спрошу тут же, чтоб новую тему не писать

Как в ASP.Net правильно заполнить значения полей формы?

Проблема такая - вызываю из одной формы другую, передавая id в querystring. В вызываемой форме в PageLoad нахожу элемент в dataContext по id и записываю значения его полей в тексбоксы. Потом правлю текст, жму кнопку - Юманарот! - опять вызывается PageLoad и перезаписывает значения заново! Введенный текст теряется.

Как все это правильно сделать, а то я ваще в этом нуб?


А, все нашел. !IsPostBack

Последний раз редактировалось SS20; 02.09.2010 в 17:42.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind