powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
12 сообщений из 12, страница 1 из 1
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37331435
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем MSVS2010SP1, MSSQL Express 2008, Silverlight 4 (всё на русском)

Мучаю пример работы с данными в Silverlight: http://msdn.microsoft.com/ru-ru/library/ff713719%28v=vs.91%29.aspx

Проблема с добавлением новой записи (при компиляции ошибок нет).

При нажатии на кнопку ОК по идее должен выполниться код:

Код: plaintext
1.
2.
3.
4.
private void OKButton_Click(object sender, RoutedEventArgs e)
{
  addEmployeeDataForm.CommitEdit();
  this.DialogResult = true;
}


Кнопка ОК на форме:
XAML<Button x:Name="OKButton" Content="ОК" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" FontFamily="Verdana" FontSize="12" FontWeight="Bold" />


Запускаю приложение, нажимаю кнопку Добавить, заполняю поля, и нажимаю ОК.
Появляется такое сообщение.
авторСущность (Entity)"tabonents : 0" в настоящее время изменяется и содержит незафиксированные изменения. После вызова метода BeginEdit для подтверждения изменения необходимо вызвать метод EndEdit или CancelEdit

Что я делаю не так? Какая инфа ещё понадобится от меня?

P.S. На странице с примером ни единого слова про EndEdit.
Intellisense вообще ничего не ведает про EndEdit.

Спасибо :)
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37344934
СДмитрийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

Что такое addEmployeeDataForm ?
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345129
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это DataForm :)
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345131
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я нашёл готовый пример здесь: http://code.msdn.microsoft.com/Getting-Started-WCF-RIA-1469cbe2

Человек его создал и выложил. Там тоже ошибка, я не понимаю, зачем выкладывать недоделанный глючный проект на MSDN? Да ещё и в MSDN ошибка.

Нажатие на кнопку ОК должно иметь такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private void OKButton_Click(object sender, RoutedEventArgs e)
{
        bool committed = DataForm.CommitEdit();
        if (committed || (!DataForm.IsItemChanged && DataForm.IsItemValid))
        {
                this.DialogResult = true;
        }
}

Ист >>
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345180
СДмитрийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

DataForm ???
В Object Browser такого класса не найдено.

Функции CommitEdit,CancelEdit,BeginEdit принадлежат DataGrid,DataGridView,ListCollectionView,BindingGroup.
Функция EndEdit принадлежит DataRow,DataRowView , .NET Forms
Вероятнее всего, для редактирования(добавления) строки используется привязка данных к строке DataGrid.
Возможный сценарий:
1) Создать данные для строки (при этом срабатывает event InitializingNewItem в котором можно задать значения по умолчанию)
2) Создать строку в DataGrid
3) Установить DataGrid.Row.DataContent = данные
4) Связать поэлементно данные с компонентами строки(работа с данными на этом заканчивается, все идет через привязку)
5) Открыть строку на редактирование вызовом функции BeginEdit() (дабы небыло лишних исключений при валидации) (работает event BeginningEdit)
6) Пользователь вводит данные в редактор и нажимает ОК
7) Полный Exception ???

Пробуй выдащить DataRow или DataRowView (смотря откуда данные). Хотя, по уму, DataContext редактора должен быть установлен именно на эти данные.
Далее DataRow.EndEdit();
Уж потом - bool CommitEdit(Microsoft.Windows.Controls.DataGridEditingUnit editingUnit =DataGridEditingUnit.Row, System.Boolean exitEditingMode=true)
Если строка не проходит валидацию - возможно тогда и возвращает false
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345213
СДмитрийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

Ошибочка вышла, звиняйте. Я не ползую Entity уровень и DataRelation.
Тем не менее EntityObject скрывает DataRow.

Грубое приближение
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class Some : INotifyPropertyChanged
{
	DatRow row;
	public Some(DataRow row)
	{
		this.row=row;
	}
	public int ID
	{
		get
		{
			return (int)row["id"];
		}
	}
	public string Name
	{
		get
		{
			return (string)row["name"];
		}
		set
		{
			row["name"]=value;
			OnChange("Name");
		}
	}
}

Зачти источник

Странно, что здесь нет кода закрытия окна.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private void OKButton_Click(object sender, RoutedEventArgs e)
{
        bool committed = DataForm.CommitEdit();
        if (committed || (!DataForm.IsItemChanged && DataForm.IsItemValid))
        {
                this.DialogResult = true;
        }
}
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345228
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СДмитрийВФункции CommitEdit,CancelEdit,BeginEdit принадлежат DataGrid,DataGridView,ListCollectionView,BindingGroup.
Функция EndEdit принадлежит DataRow,DataRowView , .NET Forms

Это методы IEditableObject. Редактируемый класс должен его поддерживать, чтобы в тупую не приходилось каждый раз писать обработчики событий в DataForm
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345230
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А код закрытия окна - DialogResult = true
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345353
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaА код закрытия окна - DialogResult = true

да, это как в delphi - ModalResult := ...
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345368
СДмитрийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVa,

Silverlight4.0public bool? DialogResult { set; get; }
Member of System.Windows.Controls.ChildWindow

Summary:
Gets or sets a value that indicates whether the System.Windows.Controls.ChildWindow was accepted or canceled.

Returns:
true if the child window was accepted; false if the child window was canceled. The default is null.
Ни слова о закрытии окна.

SeVaЭто методы IEditableObject. Редактируемый класс должен его поддерживать, чтобы в тупую не приходилось каждый раз писать обработчики событий в DataForm
Где-же тогда метод EndEdit, который автор никак не может найти? IEditableObject нет метода CommitEdit
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345374
СДмитрийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

X11да, это как в delphi - ModalResult := ...

Я имел ввиду
Silverlight4.0public void Close()
Member of System.Windows.Controls.ChildWindow

Summary:
Closes a System.Windows.Controls.ChildWindow.
...
Рейтинг: 0 / 0
Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
    #37345382
СДмитрийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVa,

SeVaЭто методы IEditableObject. Редактируемый класс должен его поддерживать, чтобы в тупую не приходилось каждый раз писать обработчики событий в DataForm

Это не совсем так.
Пример с DataRow
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Незафиксированные изменения и EndEdit MSSQL 2008,Silverlight 4 MSVS 2010SP1
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]