Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Binding и dateset, как их подружить 
V
    Опции темы
vlsaf
Дата 23.11.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Удивительная ситуация получается.

Пользоветель в программе меняет поле,
поле связано с полем таблицы через Databinding
но, после того, как я в моей форме поменял значение 
поля на другое, я подумал, раз поле связано с 
полем таблицы через Databinding, то и dataset
должно поменяться. Смотрю, что возвращает

myDataSet.HasChanges() 

Возвращает false. Dataset как будто не поменялось.

Как так? Какая то нестыковка получается?
Или Binding и Dataset не дружат друг с другом?

PM   Вверх
vlsaf
Дата 23.11.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Зайду с вопросом с другой стороны.

DataRow и DataRowView я так понимаю, это почти одно и тоже.

Вот такая вот фиговина

DataRowView row = (DataRowView)myTableBindingSource.Current;

Возвращает мою, как бы "временную" строку, которую я изменяю, редактирую и т.д.
Если я редактирую поля, которые связаны с таблицей через Binding, то как раз редактируются
поля DataRowView. 

При этом, если посмотреть на myDataSet.HasChanges(), он возвращает false.

Но как мне в этом случае посмотреть оригинальные значения полей датасета во время редактирования строки?
PM   Вверх
thomas
Дата 23.11.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



vlsaf, Приветствую.
Попробуй почитать что пишут в msdn:
DataRowView-класс, DataRowView-перечисления, DataRowView.RowVersion -свойство

Я так понимаю, DаtaRowView используется для редактирования значений и возможности отката внесенных изменений.



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vlsaf
Дата 23.11.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сделать откат внесенных изменений - это одно, и это мне не очень то и нужно.


Предположим, изменения я внес, но еще не записал. Но мне в этот момент надо 
посмотреть оригиналиные значения для моей Row.

И мне не надо делать откат изменений. А надо сравнить строку с изменениями со строкой без изменений 
(с оригиналом). 

Вот как в этом случае достать оригинал?
PM   Вверх
thomas
Дата 23.11.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



vlsaf, 
Так по первой сслылке есть пример
Код

 // Change values in the table. 
   myTable.Rows[0].BeginEdit();
   myTable.Rows[0]["col1"]= "New Component";
   myTable.Rows[0]["col2"]= 100;
   // Print the proposed values.
   if(myTable.Rows[0].HasVersion(DataRowVersion.Proposed)){
      Console.WriteLine(myTable.Rows[0]["col1", DataRowVersion.Proposed]);
      Console.WriteLine(myTable.Rows[0]["col2", DataRowVersion.Proposed]);
   }
   // Print the original values.
   if(myTable.Rows[0].HasVersion(DataRowVersion.Original)){
      Console.WriteLine(myTable.Rows[0]["col1", DataRowVersion.Original]);
      Console.WriteLine(myTable.Rows[0]["col2", DataRowVersion.Original]);
   }
   // Cancel the edit.
   myTable.Rows[0].CancelEdit();
   // Print the Current values.
   if(myTable.Rows[0].HasVersion(DataRowVersion.Current)){
      Console.WriteLine(myTable.Rows[0]["col1", DataRowVersion.Current]);
      Console.WriteLine(myTable.Rows[0]["col2", DataRowVersion.Current]);
   }
   // Try to print the proposed values again--gone after cancel edit.
   // Print the proposed values.
   if(myTable.Rows[0].HasVersion(DataRowVersion.Proposed)){
      Console.WriteLine(myTable.Rows[0]["col1", DataRowVersion.Proposed]);
      Console.WriteLine(myTable.Rows[0]["col2", DataRowVersion.Proposed]);
   }

Сделай что-то подобное, но значения выводи, к примеру, в MessageBox. Не знаю какой у тебя GUI, сам прикинь на какой обработчик события это "повесть". Там кнопочку прикрутить или комбинацию клавиш.
Что-то типа такого
Код

DataRowView row = (DataRowView)myTableBindingSource.Current;
if(row.HasVersion(DataRowVersion.Original))
{
      MessageBox.Show(row[0].ToString() + " :" + row[1].ToSting(), "оригинальное значение данных в строке")
 }



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
vlsaf
Дата 24.11.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Молоток.

Я бы тебе репутацию поднял, да вот ста постов нет.

Спасибо!


А я что-то тормознул не на шутку.

Это сообщение отредактировал(а) vlsaf - 24.11.2007, 12:32
PM   Вверх
thomas
Дата 24.11.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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




vlsaf, 
Я рад тому, что помог небольшой подсказкой решить твою проблему.
Успехов.  smile 



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




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


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

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