![]() |
|
Модераторы: gambit |
![]()
|
|
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
После того как нажали на кнопке update, нужно получить новые данные из гридвьюв-а исохранить их в базе данных. Так вот как получить новые данные (и в нагрузку еще и старые)? Веть если я не ошибаюсь - это надо делать в обработчике RowUpdating?
|
|||
|
||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Порылся в форуме и нашел, что надо использовать e.NewValues["..."], но эта колекция у меня постояно пустая и count=0/
Может это от того что я использую привязку к данным через ObjectDataSource. Еще пытался использовать такой способ:
но он почемуто возвращает старую строку (так которая была до изменения). |
|||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Зачем все так сложно: все это автоматически делается при помощи Дизайнера, т.е. задаются команды с параметрами на вставку, удаление, обновление в Источнике данных, о потом этот источник подключается к ГридВью. И все работает.
Добавлено через 4 минуты и 18 секунд Вот пример, который использует БД Northwind, он может только обновлять:
Строку подключения прописать в Вэб.конфике: <connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=ХХХХХ;Initial Catalog=Northwind;User ID=ХХХХ;Password=ХХХХХ" providerName="System.Data.SqlClient" /> </connectionStrings> Вообщем на словах это так: перетягиваю СКЛДатасурс, нажимаю далее и походу настраиваю там все, потом задаю команды на обновление, выборку, вставку, удаления. Потом перетягиваю ГридВью. И все работает. |
|||
|
||||
| Nickname |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Че-то я не понял. А ObjectDataSource разве не источник данных? Добавлено через 3 минуты и 6 секунд
А можно это переделать под objectdatasource? Просто у меня форма работает через-бизнес логику и методу обнавления передается объект. |
||||||
|
|||||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Источник, но для него нужно больше телодвижений(тебе нужно написать бизнес логику).
|
|||
|
||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
||||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
У тебя есть ОбжектДатаСурс, например:
И, например, ты поменял строчку и нажал Апдейт - тогда id и Field1 этой строчки передадутся в функцию Update класса SomeClass. А функция Update, что-то типа: public static void Update(int id, string Field1) |
|||
|
||||
| Nickname |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Уже ближе;) Осталось только понять как передать объект (функция имеет вид: public void updateemployee(EmployeeDetails emp) )
Для ObjectDataSource-а написал
Функция вызывается - не каких ошибок не выдает но поля объекта emp заполнены нулями и пустыми строками. Может я не правильно что-то тут делаю:
И надо ли использовать:
Это сообщение отредактировал(а) Nickname - 15.11.2007, 16:45 |
||||||
|
|||||||
| Servena |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Использовать нужно.
Попробуй вместо обжект передать какой-то простой тип (любое поле таблицы, например Стринговое) а в функции тоже отлови его (вместо обжекта) и посмотри - передастся или нет?
А функцию так:
и может все что здесь:
закомментируй. Добавлено через 1 минуту и 24 секунды Вообще удали это:
|
||||||||
|
|||||||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Не передает он нифига. Без этого выдает ошибку
|
|||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Удали декларацию этой функции из элемента ДатаГрид.
|
|||
|
||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
||||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Сейчас попробую пример подготовить с обжектдатасурс..
|
|||
|
||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Могу свой скинуть для примера
|
|||
|
||||
| Servena |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Вобщем, так.
1. Создай новый проект(веб-сайт), с с-шарповским файлом делать ничего не нужно, а аспх-файл такой:
Теперь, добавь к решению новый проект - библиотеку (класс лайбрери), код такой:
Откомпилируй, и в основном проекте добавь ссылку на нее (Адд референс в свойствах проекта). Здесь в функции ЗагрузитьВсе - получаем все данные с таблицы Регионы БД Носвинд. Нас интересует функция Апдейт - туда ставим брейк. И видим, что когда в таблице нажмем Едит, потом Обновить - Мы попадаем в эту функцию. В RegionID - Айди записи, в RegionDescription - измененная запись. В эксперименте выяснилось, что <UpdateParameters> - не обязательны. Среда и так знает, что передавать. |
||||
|
|||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Пример запустил - все работает нормально. +1 Где то я у себя накосячил.
|
|||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
ОК, покажи свой ОбжектДатасурс и Гридвью.
|
|||
|
||||
| Nickname |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Не пойму почему у вас в примере события OnRowEditing и OnRowUpdating не объявлены и все работает, а у меня без них выдает ошибку.
|
||||
|
|||||
| Nickname |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
На всякий случай код GridView1_RowUpdating
Метод для апдейта указываю программно
Класс EmployeeDetails
Это сообщение отредактировал(а) Nickname - 16.11.2007, 15:40 |
||||||
|
|||||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
В общем не передает он параметры почему-то и все на этом. Явно кде-то в коде ошибка
Это сообщение отредактировал(а) Nickname - 16.11.2007, 17:32 |
|||
|
||||
| Servena |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
ОК, попробуй пока так - это упрощенный вариант без обработки количества страниц.
aspx-файл:
C#-файл:
class-файл:
Ставь точку в апдейтимплуи и там все будет. Мне кажется ошибка здесь: обрати внимание на TypeName="EmployeeDetails" и на название класса(должно быть одно и то же). Чтобы правильно передавались параметры - их нужно определить (SELECT employeeid,firstname,lastname,titleofcourtesy,notes FROM EmployeeDetails), т.е. нужно еще посмотреть функцию в которой выбираются данные - getemployees_ds? |
||||||
|
|||||||
| Nickname |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Так работает, но только не с моим примером:(
Кстати по поводу вашего замечания:
У меня EmployeeDeatils - имя класса, который описывает бизнес объект, а для TypeName я использую EmployeeDB - класс для работы с базой. Так что тут все правильно. Функция выборки данных содержит в себе объявление параметров:
В общем дело в чем-то другом. Давайте я скину свой солюшион? Только как его тут прикрепить? Это сообщение отредактировал(а) Nickname - 19.11.2007, 13:05 |
||||
|
|||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Давай.
Внизу под смайлами есть кнопка Обзор и поле. |
|||
|
||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
А вот нашел (как прикрепить)...
В проекте головной файл файл называется default.aspx (на остальные *aspx не обращайте внимание) Присоединённый файл ( Кол-во скачиваний: 7 )
employees.rar 18,10 Kb |
|||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Пока понятно почему НУЛЬ - он в класс EmployeeDetails даже не заходит.
|
|||
|
||||
| Nickname |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Я не сомневаюсь, что это имено так
у меня до них доходит |
|||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Вобщем, оставил ОбжектДатасурс1, удалил все с Пэйдж_лоад - работает. Вызывает функцию updateemployee2. В ней можно создавать объект емп и инициализировать его необходимыми полями а потом передавать в updateemployee(каряво). А лучше изменить updateemployee так чтобы он принимал все поля.
Все также, только нет той разбивки по страницам. Теперь нужно аккуратно ее вставить. Присоединённый файл ( Кол-во скачиваний: 6 )
Desktop.rar 4,37 Kb |
|||
|
||||
| Nickname |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Servena, спасибо (+1 еще раз) - длагодоря Вам разобрался:
надо было удалить строчку
а вместо неё вписать в свойствах gridView-а:
Блин, ну кто ж знал И чтоб пример окончательно работал в коде пэйдж_лоад-а нужно удалить строку:
Это сообщение отредактировал(а) Nickname - 19.11.2007, 16:22 |
||||||
|
|||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |