ASP.NET & update trouble...
От: Denisss  
Дата: 16.02.04 13:20
Оценка:
Берем WinForms, ложим два TextBox на форму (поля ID, FName), DataAdapter (там запрос select ID, FName from TI_IS where ID=1), генерим датасет dsIS1. Заполнение датасета и прочее не привожу. Меняем FName, далее при нажатии на кнопку "Update" вызывается такое:

BindingContext[dsIS1.TI_IS].EndCurrentEdit();
odap.Update(dsIS1.TI_IS.GetChanges());
dsIS1.TI_IS.AcceptChanges();


всё работает, все счастливы.

Теперь переходим к ASP.NET. Ложим на страничку два TextBox, кнопку Update в btnUpdate_Click пишем:

dsIS1.TI_IS.Rows[0].EndEdit();
odap.Update(dsIS1.TI_IS.GetChanges());
dsIS1.TI_IS.AcceptChanges();


dsIS1.TI_IS.GetChanges() всегда возвращает null. Что я делаю не так и как сделать правильно?
Re: ASP.NET & update trouble...
От: hellraiser Беларусь  
Дата: 16.02.04 13:54
Оценка:
Здравствуйте, Denisss, Вы писали:

D>Берем WinForms, ложим два TextBox на форму (поля ID, FName), DataAdapter (там запрос select ID, FName from TI_IS where ID=1), генерим датасет dsIS1. Заполнение датасета и прочее не привожу. Меняем FName, далее при нажатии на кнопку "Update" вызывается такое:


D>
D>BindingContext[dsIS1.TI_IS].EndCurrentEdit();
D>odap.Update(dsIS1.TI_IS.GetChanges());
D>dsIS1.TI_IS.AcceptChanges();
D>


D>всё работает, все счастливы.


D>Теперь переходим к ASP.NET. Ложим на страничку два TextBox, кнопку Update в btnUpdate_Click пишем:


D>
D>dsIS1.TI_IS.Rows[0].EndEdit();
D>odap.Update(dsIS1.TI_IS.GetChanges());
D>dsIS1.TI_IS.AcceptChanges();
D>


D>dsIS1.TI_IS.GetChanges() всегда возвращает null. Что я делаю не так и как сделать правильно?

попробуй так
        private void _update(DataTable table)
        {
            SqlDataAdapter _da = (SqlDataAdapter)_data.GetType().GetField(String.Format("da_{0}", table.TableName.ToLower()),
                BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField).GetValue(_data);

            if (_da != null)
            {
                _da.Update(table);
            }
        }

гдк _data — System.ComponentModel.Component там размещены все дата адаптеры проекта или его части, при этом они все начинаются на "da_имя". хотя это мои странности можеш делать как хочеш просто, идея из кода понятна.
Re[2]: ASP.NET & update trouble...
От: Denisss  
Дата: 16.02.04 15:24
Оценка:
D>>dsIS1.TI_IS.GetChanges() всегда возвращает null. Что я делаю не так и как сделать правильно?
H>попробуй так

[.........]
H> private void _update(DataTable table)
H> {
[.........]
H> }
H>гдк _data — System.ComponentModel.Component там размещены все дата адаптеры проекта или его части, при этом они все начинаются на "da_имя". хотя это мои странности можеш делать как хочеш просто, идея из кода понятна.

это то же самое... Только у тебя адаптер ищется, а у меня он заранее известен. Тут немного другое дело — update даже не уходит на сервер. То есть проблем гдето с определением того, какое поле изменилось... Возможно не на месте EndEdit или неправильно оно вызывается — вот этого я и не могу понять.
Re[3]: ASP.NET & update trouble...
От: hellraiser Беларусь  
Дата: 16.02.04 15:45
Оценка:
Здравствуйте, Denisss, Вы писали:


D>>>dsIS1.TI_IS.GetChanges() всегда возвращает null. Что я делаю не так и как сделать правильно?

H>>попробуй так

D>[.........]

H>> private void _update(DataTable table)
H>> {
D>[.........]
H>> }
H>>гдк _data — System.ComponentModel.Component там размещены все дата адаптеры проекта или его части, при этом они все начинаются на "da_имя". хотя это мои странности можеш делать как хочеш просто, идея из кода понятна.

D>это то же самое... Только у тебя адаптер ищется, а у меня он заранее известен. Тут немного другое дело — update даже не уходит на сервер. То есть проблем гдето с определением того, какое поле изменилось... Возможно не на месте EndEdit или неправильно оно вызывается — вот этого я и не могу понять.

фактически тоже да нетоже, ты посылаеш изменения в датасете dsIS1.TI_IS.GetChanges()); а я посылаю всю таблицу целиком, а он уже сам там решает что изменилось а что нет. вот и тебе советую послать не GetChanges() а таблицу целиком или даже датасет целиком. и еще проверь перед посылкой есть ли вообще данные в датасет и в частности в той таблице в которой меняеш
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.