Команда обновления не работает в представлении «Динамические данные» - PullRequest
2 голосов
/ 11 августа 2009

Я только что создал очень простое веб-приложение Dynamic Data с использованием Entity Framework, и когда я щелкаю команду редактирования в GridView, чтобы открыть представление сведений, редактировать некоторые поля и щелкнуть ссылку Update, ничего не происходит.

У меня вопрос, что могло заставить это обновление ничего не делать, и есть ли какие-либо советы по его диагностике?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Кажется, EntityDataSource скрывает исключения. Я обнаружил несколько причин, по которым операция обновления или вставки не завершилась, но мне пришлось использовать трассировку SQL и перехватывать отправляемую команду. Выполнение этой команды вручную дает быструю и видимую ошибку SQL. Почему это не относится к моему интерфейсу - загадка.

Ответы [ 2 ]

5 голосов
/ 20 августа 2009

Как правило, каждый раз, когда вы отлаживаете или разрабатываете веб-сайт с динамическими данными, нужно перейти в файл Site.master и установить для атрибута ScriptManager EnablePartialRendering значение false:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false"/>

Это сделает исключения более очевидными, которые в противном случае кажутся скрытыми из-за использования панелей обновления, которые обертывают вокруг DetailsView, FormViews и GridViews в шаблонах страницы List / Edit / Insert / Details / ListDetails. *

Я думаю, что настоящая проблема, с которой вы столкнулись, связана с обработкой ошибок и обновлением панелей. При отладке в IE вы видите маленький восклицательный знак в левом нижнем углу экрана? Если это так, щелкните по нему, и вы увидите ошибку javascript (Sys.WebForms.PageRequestManagerServerErrorException), возникшую из-за необработанного исключения.

Подробнее об этом читайте в блоге ScottGu на тему .

@ Комментарий Аарона: слишком рано улавливать ошибки, на которые он ссылается. Я думаю, что в этом сценарии он хочет обработать событие Updated, потому что EntitydataSource фактически не сгенерирует исключение до тех пор, пока он не даст возможность обработчикам этого события выполнить: ( MSDN ):

Если ошибка возникает, когда изменения сохраняется в источнике данных, Обновленное событие поднято и Исключительная собственность EntityDataSourceChangedEventArgs объект устанавливается на возвращаемый Исключение. Если вы обрабатываете исключение в обновленном обработчике событий установите Свойство ExceptionHandled равно true. Это предотвращает исключение поднял снова. Когда вы указываете значение ложь для исключения свойство, EntityDataSource повторно поднимает исключение.

0 голосов
/ 21 августа 2009

Если я пытаюсь обновить данные из элемента управления DetailsView, я бы в основном полагался на методы кода. Я считаю, что ItemCommand срабатывает, когда вы нажимаете на любую из стандартных кнопок DetailView. Поэтому внутри этих событий вы должны выяснить, какая кнопка сработала, и предпринять необходимые действия.

Но так как ваше подробное представление находится внутри шаблона редактирования gridview, я предлагаю вам связать события вручную; включите их в свою разметку вручную.

... И обновление, которое вы щелкаете, находится в DetailsView, а не в gridView; поэтому не забудьте отменить режим редактирования gridview и заново привязать gridview.

Надеюсь, это поможет !!!

...