powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
16 сообщений из 16, страница 1 из 1
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643033
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ручками править значение, если это первая запись (пустой ДатаСет)?

this.tblSome.Rows[0]["ProcessID"] = this.ProcessID; <- нет еще Rows[0]
this.BindingContext[tblSome].EndCurrentEdit();
<- А здесь уже ошибка, что ProcessID недолжен быть Null

Т.е. я отобразил редактор и сделал:
this.BindingContext[tblSome].EndCurrentEdit();
this.BindingContext[tblSome].AddNew();

После этого ввел новые значения и хочу править "ProcessID".

Как это провернуть? Не делать же ProcessID.AllowDBNull = True???
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643065
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
DataRow rw=tblSome.NewRow();
rw["ProcessID"]=this.ProcessID;
...
tblSome.Rows.Add(rw);
---
а зачем ты работаешь через BindingContext ?
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643071
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем ненравится?
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643084
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
писанины много, а толку чуть
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643110
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я несовсем понял.

Как можно решить этот вопрос другим образом?
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643124
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так тебе же код привел:
1. создаешь пустую запись для таблицы. в состоянии deattached на неё не распространяются constraint'ы таблицы и dataset
2. заполняешь поля этой записи
3. добавляешь ее в таблицу

а все databinding'и это изменение отловят, т.к. они подписаны на события изменения данных в источнике. и, соотвественно, все привязанные контролы будут сразу же показывать эти изменения.
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643142
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. создаешь пустую запись для таблицы. в состоянии deattached на неё не
распространяются constraint'ы таблицы и dataset

deattached что за состояние ???

2. заполняешь поля этой записи
3. добавляешь ее в таблицу

У меня, вроде, таже кутерьма:
this.BindingContext[tblSome].AddNew();
.... заполянет(изменяет) пользователь
this.BindingContext[tblSome].EndCurrentEdit();

а все databinding'и это изменение отловят, т.к. они подписаны на события
изменения данных в источнике. и, соотвественно, все привязанные контролы
будут сразу же показывать эти изменения.

Меня это устраивает.
Единственное, я немогу править запись!!!
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643198
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕдинственное, я немогу править записьа без этого тебе это надо ?

не хотел, но придется
MS: CurrencyManager.AddNewYou typically use this property only if you are creating your own control incorporating the CurrencyManager . Otherwise, to add items, if the data source is a DataView, use the AddNew method of the DataView class. If the data source is a DataTable, use the NewRow method and add the row to the DataRowCollection.
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643217
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кузя авторЕдинственное, я немогу править записьа без этого тебе это надо ?

не хотел, но придется
MS: CurrencyManager.AddNewYou typically use this property only if you are creating your own control incorporating the CurrencyManager . Otherwise, to add items, if the data source is a DataView, use the AddNew method of the DataView class. If the data source is a DataTable, use the NewRow method and add the row to the DataRowCollection.

this.BindingContext[this.dsMain,"tblSome"].EndCurrentEdit();

А это тогда срабатывает как - DataView?
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643253
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для DataView метод AddNew
Код: plaintext
1.
2.
DataRowView drv = dv.AddNew();
 drv["ProcessID"]=this.ProcessID;
 drv.EndEdit();
как видишь, здесь AddNew - возвращает не запись а DataRowView для редактирования (в DataRowView есть ссылка на DataRow, которая находится в состоянии Deattached). реальное добавление записи в таблицу происходит по EndEdit.
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643277
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хотел сказать, что
новая запись:
BindingContext[dsMain,"tblSome"].EndCurrentEdit();
BindingContext[dsMain,"tblSome"].AddNew();

и ее сохранение и изменения
BindingContext[this.dsMain,"tblSome"].EndCurrentEdit();
dsMain.Tables["tblSome"].Rows[0]["ParentID"] = ParentID;
sdaSomeAdapter.Update(this.dsMain, "tblSome");

работает без каких либо ексессов :(

Почему изменение DataSet+DataMember на DataTable - все слетает ???
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643311
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему изменение DataSet+DataMember на DataTable - все слетает ???извини, не понял. что и где слетает ?
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643329
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BindingContext[] может принимать DataSource или DataSource+DataMember.

Если передавать Dataset c указанием DataMember (см. пример выше) - все хорошо работает: т.е. нормально заканчивается редактирование и я спокойно правлю необходимый мне параметр.
Если же я передаю только DataTable - вылетает ошибка, что SomeField неможет быть null.

...и я застрял меж трех берез...
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643331
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ты про BindingContext - то это реально другой binding.
т.е. BindingContext[dataSet, tableName] != BindingContext[dataTable]


чтобы все работало как надо (в смысле - синхронно) - нужно "умудриться" все контролы на форме посадить на один и тот же DataSource.
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643348
Свой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ты про BindingContext - то это реально другой binding.
т.е. BindingContext[dataSet, tableName] != BindingContext[dataTable]

Дык, я уже понял что все сие разное :((

Но я думал, что за логично было бы, если
BindingContext[dataSet, tableName] = BindingContext[dataTable]

т.е. dataSet, tableName возвращает необходимый dataTable
...
Рейтинг: 0 / 0
tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
    #32643373
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в конечном итоге - на каком варианте остановиться и доводить до ума - это твоё дело как разработчика.

мой выбор был/остается - см. 2-й (+6-й) посты. обоснований не привожу (чуток уже было), т.к. обосновать можно и черта лысого, было бы желание
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / tblSome.Rows[0]["SomeField"] если Rows.Count = 0 ???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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