Как лучше организовать передачу данных в диалоговое окно?
От: DavidA  
Дата: 17.03.03 06:58
Оценка:
Есть ,две формы ,в первой можно просматривать в Gride (только для чтения) данные,
а редактирует их в диалоговом окне.При этом у меня возник вопрос,как лучше организовать
передачу данных в диалоговое окно.Сейчас я передаю их,через свойства диалогового окна


private string mTypDoc;

public string TypDoc
{
   get
   {
      return txtTypDoc.Text.ToString();
   }
   set
  {
      mTypDoc=value;
      txtTypDoc.Text=mTypDoc;
  }
}


а передаю их так:


frmETypDoc.TypDoc=Row["TypDoc"].ToString().Trim();



есть ли более правильное решение?

22.12.03 18:01: Перенесено модератором из '.NET' — AVK
Re: Как лучше организовать передачу данных в диалоговое окно
От: ВованЯ  
Дата: 17.03.03 07:05
Оценка:
Здравствуйте, DavidA, Вы писали:

DA>Есть ,две формы ,в первой можно просматривать в Gride (только для чтения) данные,

DA>а редактирует их в диалоговом окне.При этом у меня возник вопрос,как лучше организовать
DA>передачу данных в диалоговое окно.Сейчас я передаю их,через свойства диалогового окна

я делаю это через конструктор диалоговой формы. в качестве параметра передается целиком DataRow.
С уважением, Владимир
Re[2]: Как лучше организовать передачу данных в диалоговое о
От: DavidA  
Дата: 17.03.03 07:14
Оценка:
Здравствуйте, ВованЯ, Вы писали:

ВЯ>Здравствуйте, DavidA, Вы писали:


DA>>Есть ,две формы ,в первой можно просматривать в Gride (только для чтения) данные,

DA>>а редактирует их в диалоговом окне.При этом у меня возник вопрос,как лучше организовать
DA>>передачу данных в диалоговое окно.Сейчас я передаю их,через свойства диалогового окна

ВЯ>я делаю это через конструктор диалоговой формы. в качестве параметра передается целиком DataRow.


Мне приходила такая идея,но я не пробовал,а вот попытка передавать DataSet и привезать
TextBox к DataSet окончилась неудачно:


private DataSet dsTypDoc;

public eTypDocForm(ref DataSet ds)
{
    dsTypDoc=ds;
        dsTypDoc.Tables["ListTypDoc"]    
    txtTypDoc.DataBindings.Add("Text",dsTypDoc.Tables["ListTypDoc"],"TypDoc"); 
}


хочу,чтобы данные в textbox'сах сами отображались.
Re[3]: Как лучше организовать передачу данных в диалоговое о
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.03.03 07:25
Оценка:
Здравствуйте, DavidA, Вы писали:

DA>Мне приходила такая идея,но я не пробовал,а вот попытка передавать DataSet и привезать

DA>TextBox к DataSet окончилась неудачно:

Передавать нужно не DataRow и DataSet, а DataRowView и DataView
... << RSDN@Home 1.0 beta 6a >>
AVK Blog
Re[3]: Как лучше организовать передачу данных в диалоговое о
От: ВованЯ  
Дата: 17.03.03 07:32
Оценка:
DA>private DataSet dsTypDoc;

DA>public eTypDocForm(ref DataSet ds)

DA>{
DA> dsTypDoc=ds;
DA> txtTypDoc.DataBindings.Add("Text",dsTypDoc.Tables["ListTypDoc"],"TypDoc");
DA>}

DA>хочу,чтобы данные в textbox'сах сами отображались.


наверное, нужно было бы вместе с DataSet передать CurrencyManager.Position и после установки databinding
выставить этот position для диалоговой формы.
завершение редактирования должно идти (поскольку position не изменняется) через
CurrencyManager.EndCurrentEdit (по OK), или CancelCurrentEdit для диалог.формы (по Cancel)
С уважением, Владимир
Re[2]: Как лучше организовать передачу данных в диалоговое о
От: DavidA  
Дата: 17.03.03 07:54
Оценка:
Здравствуйте, ВованЯ, Вы писали:

ВЯ>Здравствуйте, DavidA, Вы писали:


DA>>Есть ,две формы ,в первой можно просматривать в Gride (только для чтения) данные,

DA>>а редактирует их в диалоговом окне.При этом у меня возник вопрос,как лучше организовать
DA>>передачу данных в диалоговое окно.Сейчас я передаю их,через свойства диалогового окна

ВЯ>я делаю это через конструктор диалоговой формы. в качестве параметра передается целиком DataRow.



а где нужно передавать занчения поля textbox'ксу

в конструкторе: txtTypDoc.Text=mRow["TypDoc"].ToString().Trim();

вылетает ошибка

если в событие Load то форма отображается пустая?
Re[3]: Как лучше организовать передачу данных в диалоговое о
От: DavidA  
Дата: 17.03.03 08:03
Оценка:
Здравствуйте, DavidA, Вы писали:

DA>Здравствуйте, ВованЯ, Вы писали:


ВЯ>>Здравствуйте, DavidA, Вы писали:


DA>>>Есть ,две формы ,в первой можно просматривать в Gride (только для чтения) данные,

DA>>>а редактирует их в диалоговом окне.При этом у меня возник вопрос,как лучше организовать
DA>>>передачу данных в диалоговое окно.Сейчас я передаю их,через свойства диалогового окна

ВЯ>>я делаю это через конструктор диалоговой формы. в качестве параметра передается целиком DataRow.


DA>

DA>а где нужно передавать занчения поля textbox'ксу


разобрался,теперь отображается

DA>в конструкторе: txtTypDoc.Text=mRow["TypDoc"].ToString().Trim();


DA>вылетает ошибка


DA>если в событие Load то форма отображается пустая?
Re[2]: Как лучше организовать передачу данных в диалоговое о
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 17.03.03 09:17
Оценка:
Здравствуйте, ВованЯ, Вы писали:

DA>>Есть ,две формы ,в первой можно просматривать в Gride (только для чтения) данные,

DA>>а редактирует их в диалоговом окне.При этом у меня возник вопрос,как лучше организовать
DA>>передачу данных в диалоговое окно.Сейчас я передаю их,через свойства диалогового окна

ВЯ>я делаю это через конструктор диалоговой формы. в качестве параметра передается целиком DataRow.


В своем проекте я посчитал разумным передавать не row, а только ключ, и тоже через конструктор.
Причина в том, что за время, пока пользователь смотрит в grid и выбирает запись на редактирование, база может измениться.
Re[3]: Как лучше организовать передачу данных в диалоговое о
От: mihailik Украина  
Дата: 19.03.03 17:55
Оценка:
N>В своем проекте я посчитал разумным передавать не row, а только ключ, и тоже через конструктор.
N>Причина в том, что за время, пока пользователь смотрит в grid и выбирает запись на редактирование, база может измениться.

Так row это же ссылка! Если база изменится, в row это тоже отразится.
... << RSDN@Home 1.0 beta 6a >>
Re[4]: Как лучше организовать передачу данных в диалоговое о
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 20.03.03 07:07
Оценка:
Здравствуйте, mihailik, Вы писали:

N>>В своем проекте я посчитал разумным передавать не row, а только ключ, и тоже через конструктор.

N>>Причина в том, что за время, пока пользователь смотрит в grid и выбирает запись на редактирование, база может измениться.

M>Так row это же ссылка! Если база изменится, в row это тоже отразится.


Странно, может я не понимаю чего...
Под row мы тут понимаем DataRow, так?.. DataRow ссылается в DataSet, который в свою очередь есть структура данных в памяти, представляющая образ базы или одной из таблиц базы. Допустим, что база изменилась (извне, не важно чем и как). Так как это может отразиться в row? База же не будет сообщать программе о своем изменении. Да и в любом случае, для обновления датасета нужна какая-то синхронизация — вызов SQL-оператора SELECT, например.
В моей программе предполагается многопользовательская работа, поэтому изменение базы извне возможно в любой момент. Вот поэтому я и передаю ключ на строку, а не row.
... << RSDN@Home 1.0 beta 6a >>
Re[5]: Как лучше организовать передачу данных в диалоговое о
От: Lmdrv Россия  
Дата: 20.03.03 09:07
Оценка:
Здравствуйте, nzeemin, Вы писали:

N>Под row мы тут понимаем DataRow, так?.. DataRow ссылается в DataSet, который в свою очередь есть структура данных в памяти, представляющая образ базы или одной из таблиц базы. Допустим, что база изменилась (извне, не важно чем и как). Так как это может отразиться в row? База же не будет сообщать программе о своем изменении. Да и в любом случае, для обновления датасета нужна какая-то синхронизация — вызов SQL-оператора SELECT, например.

N>В моей программе предполагается многопользовательская работа, поэтому изменение базы извне возможно в любой момент. Вот поэтому я и передаю ключ на строку, а не row.

Скажи пожалуйста, а как у тебя решается проблема когда двое (или более) пользователей пытаются редактировать одну и ту и же запись — запрещаешь второму пользователю открыть диалог редактирования или как-то по-другому?
... << RSDN@Home 1.0 beta 6a >>
Re[6]: Как лучше организовать передачу данных в диалоговое о
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 20.03.03 09:41
Оценка:
Здравствуйте, Lmdrv, Вы писали:

N>>Под row мы тут понимаем DataRow, так?.. DataRow ссылается в DataSet, который в свою очередь есть структура данных в памяти, представляющая образ базы или одной из таблиц базы. Допустим, что база изменилась (извне, не важно чем и как). Так как это может отразиться в row? База же не будет сообщать программе о своем изменении. Да и в любом случае, для обновления датасета нужна какая-то синхронизация — вызов SQL-оператора SELECT, например.

N>>В моей программе предполагается многопользовательская работа, поэтому изменение базы извне возможно в любой момент. Вот поэтому я и передаю ключ на строку, а не row.

L>Скажи пожалуйста, а как у тебя решается проблема когда двое (или более) пользователей пытаются редактировать одну и ту и же запись — запрещаешь второму пользователю открыть диалог редактирования или как-то по-другому?


Разрешаю редактировать обоим без всяких проверок.
База — .MDB через Jet, и приложение не такого уровня чтобы делать серьезное разграничение доступа с локами на каждое открытие диалога.

Кстати, мне кажется ты ушел от ответа — как все-таки у тебя оказывается что "Если база изменится, в row это тоже отразится"?
Re[7]: Как лучше организовать передачу данных в диалоговое о
От: Lmdrv Россия  
Дата: 20.03.03 11:04
Оценка:
Здравствуйте, nzeemin, Вы писали:

L>>Скажи пожалуйста, а как у тебя решается проблема когда двое (или более) пользователей пытаются редактировать одну и ту и же запись — запрещаешь второму пользователю открыть диалог редактирования или как-то по-другому?


N>Разрешаю редактировать обоим без всяких проверок.

N>База — .MDB через Jet, и приложение не такого уровня чтобы делать серьезное разграничение доступа с локами на каждое открытие диалога.

Спасибо, у меня аналогичная задача с такой же базой (с очень простой структурой), только я пока что новичок (и в базах и в .NET).

N>Кстати, мне кажется ты ушел от ответа — как все-таки у тебя оказывается что "Если база изменится, в row это тоже отразится"?

Наверное перепутал меня с mihailik.
... << RSDN@Home 1.0 beta 6a >>
Re[7]: Как лучше организовать передачу данных в диалоговое о
От: mihailik Украина  
Дата: 20.03.03 12:00
Оценка:
N>>>Под row мы тут понимаем DataRow, так?.. DataRow ссылается в DataSet, который в

N>Кстати, мне кажется ты ушел от ответа — как все-таки у тебя оказывается что "Если база изменится, в row это тоже отразится"?


Нет, это у меня "оказывается"

Я просто не понял, что ты в диалоге опять перечитываешь данные. В принципе, мне такой подход не нравится, но это уж смотря по задаче.

Я считаю, хорошо бы пользователю предоставлять одну целостную картину данных на какой-то момент. А то получится, что он в списке выбрал "Кузьма", а диалог перечитал данные и отобразил уже "Кузя". При этом основная форма на заднем плане так и висит как "живое свидетельство собственного горя и сиротства".

А если там ещё и фильтры, то всё может слишком усложниться. То ли дело, если мы обновляем данные единовременно, всем скопом. Ну, да дело хозяйское
... << RSDN@Home 1.0 beta 6a >>
Re[7]: Как лучше организовать передачу данных в диалоговое о
От: mihailik Украина  
Дата: 20.03.03 12:27
Оценка:
N>>>Под row мы тут понимаем DataRow, так?.. DataRow ссылается в DataSet, который в

N>Кстати, мне кажется ты ушел от ответа — как все-таки у тебя оказывается что "Если база изменится, в row это тоже отразится"?


Нет, это у меня "оказывается"

Я просто не понял, что ты в диалоге опять перечитываешь данные. В принципе, мне такой подход не нравится, но это уж смотря по задаче.

Я считаю, хорошо бы пользователю предоставлять одну целостную картину данных на какой-то момент. А то получится, что он в списке выбрал "Кузьма", а диалог перечитал данные и отобразил уже "Кузя". При этом основная форма на заднем плане так и висит как "живое свидетельство собственного горя и сиротства".

А если там ещё и фильтры, то всё может слишком усложниться. То ли дело, если мы обновляем данные единовременно, всем скопом. Ну, да дело хозяйское
... << RSDN@Home 1.0 beta 6a >>
Re[8]: Как лучше организовать передачу данных в диалоговое о
От: Аноним  
Дата: 15.06.04 13:47
Оценка:
Здравствуйте, mihailik, Вы писали:

N>>>>Под row мы тут понимаем DataRow, так?.. DataRow ссылается в DataSet, который в


N>>Кстати, мне кажется ты ушел от ответа — как все-таки у тебя оказывается что "Если база изменится, в row это тоже отразится"?


M>Нет, это у меня "оказывается"


M>Я просто не понял, что ты в диалоге опять перечитываешь данные. В принципе, мне такой подход не нравится, но это уж смотря по задаче.


M>Я считаю, хорошо бы пользователю предоставлять одну целостную картину данных на какой-то момент. А то получится, что он в списке выбрал "Кузьма", а диалог перечитал данные и отобразил уже "Кузя". При этом основная форма на заднем плане так и висит как "живое свидетельство собственного горя и сиротства".


M>А если там ещё и фильтры, то всё может слишком усложниться. То ли дело, если мы обновляем данные единовременно, всем скопом. Ну, да дело хозяйское



Лучше передавать DataRow так как можно созранить в БД и автоматически обновится строка в гриде
если изменить содержимое данной DataRow

Я согласен что надо редактировать старую версию строки а вот дальше что делать если кто-то изменил строку
кто как решает данную ситуацию ??? (я пока сохраняю данные кто последний)
Re[9]: Как лучше организовать передачу данных в диалоговое о
От: mihailik Украина  
Дата: 16.06.04 12:30
Оценка:
А>Я согласен что надо редактировать старую версию строки а вот дальше что делать если кто-то изменил строку
А>кто как решает данную ситуацию ??? (я пока сохраняю данные кто последний)

Это вопрос организационный вроде бы. Но обычно делают как проще — кто последний.
... << Rsdn@Home 1.1.4 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.