DEV.BG Форуми
Май 20, 2012, 16:02:21 *
Добре дошъл/дошла, Гост. Моля, въведи своето потребителско име или се регистрирай.

Влез с потребителско име, парола и продължителност на сесията
 
   Начало   Помощ Търси Вход Регистрирай се  
Страници: [1]   Надолу
  Изпечатай  
Автор Тема: Edit Form въпросче  (Прочетена 1026 пъти)
0 Членове и 1 Гост преглежда(т) тази тема.
zlobcho
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 2


Профил Ел. поща
« -: Февруари 27, 2008, 09:55:25 »

Значи имам следния въпрос относно редактиране на данни чрез форма. Да кажем имаме следният клас:

[code:1lpuckim]   
class Student
{
   private string mName;
   private int mAge;
   public string Name
   {
      get
      {
         return mName;
      }
      set
      {
         mName = value;
      }
   }
   public int Age
   {
      get
      {
         return mAge;
      }
      set
      {
         mAge = value;
      }
   }
}[/code:1lpuckim]

и искам да направя форма, чрез която да редактирам данните на инстанция. За целта ще използвам WPF форма, с 2 TextBox-a : tbName и tbAge, и 2 Button-а: btnSave и  btnCancel.
Изправен съм пред следния проблем. Как е правилно да се реализира тази форма, за да имам възможността да отказвам промените при натискане на btnCancel и съответно да ги записвам при натискане на Save, като освен това имаме процес на валидация преди записването - т.е. ако името не е празно и годините са число сейваме. Аз лично опитах реализация с Binding на TextBox-овете със съответните пропъртита на инстанцията на Student, като използвам, че Binding-a има валидация и че UpdateSourceTrigger-а може да се задава Explicit, и да се ъпдейтва когато искам (при натискане на btnSave), но проблема е, че ако валидацияата мине, пропъртито се променя, а ако другата се издъни, няма как да я върна. Т.е. искам ако всичко е валидно, тогава да се променят пропъртитата на класа (както е в ASP), а не ако един Binding е валиден да се променя пропъртито му и ако друг гръмне и после се натисне btnCancel, да имаме записани промени. Надявам се да съм обяснил добре проблема и да има някой, който да може да ми помогне.
Благодаря Усмивчица
Активен
IvayloHristov
Administrator
Нови
*****

Приноси: +3/-0
Неактивен Неактивен

Публикации: 30


Профил WWW Ел. поща
« Отговор #1 -: Февруари 27, 2008, 11:28:48 »

Здравей,

Не съм напълно сигурен, че разбрах какво искаш да постигнеш, но ще се опитам да ти отговоря.

Правилния начин да реализираш подобно нещо е този, клас Student да го отделиш в отделен файл и да е колко се може по - малко свързан презентационната ти логика. Ако правилно съм разбрал, това е клас, който съдържа данни. Винаги е препоръчително да има колко се може по - малко свързване между презентационната логика, бизнес логиката и данните.

Аз бих го направил така:
В WPF формата си имам валидация и работя с локалните стойности, ако всичко е нормално и всичко е в коректните стойности тогава запазвам данните в класа Student.

Надявам се да съм успял да отговоря на въпроса ти.

Поздрави,
   Ивайло Христов
Активен
zlobcho
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 2


Профил Ел. поща
« Отговор #2 -: Февруари 28, 2008, 11:55:25 »

Този подход ми се струва приложим за по-прости класове, както и до колкото разбирам напълно обезмисля Binding-a, който е много застъпен във WPF. Но отговори на въпроса ми. Явно няма универсален подход за едитване. Аз имам идея за нещо като блок транзакция, който или се изпълнява целия код в него или нищо, но за жалост от майкрософт още не са се сетили да направят нещо такова Усмивчица. Иначе ще е яко Усмивчица. Благодаря.
Активен
Страници: [1]   Нагоре
  Изпечатай  
 
Отиди на:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!