2009-09-01 1 views
0

Я борюсь с проблемой, я просто могу найти решение.asp.net 2.0: update formview с jquery

Прежде всего, я не могу использовать asp.net AJAX или что-то еще, что стандартное asp.net 2.0, поскольку администратор сервера ничего не установит.

Так вот, что я пытаюсь сделать. (Для любопытным, перейдите к смелой вопрос ниже)

Моя страница состоит из нескольких частей, каждая из которых получает нагруженных jquery.load (URL). Одна из этих частей страницы заполняется aspx, которая содержит вид формы. Поскольку я не хочу иметь обратную передачу, я переключаюсь на EditTemplate в виде формы простым щелчком на обычной кнопке html, которая представляет параметр, указывающий, что страница aspx переключается в режим редактирования, например.

Page_Load(...) 
{ 
    if(Request.Params["SwitchEditMode"]) SwitchEditMode(); 
} 

Это прекрасно работает! Теперь вот часть, где я застрял. Элементы в EditTemplate основаны на выборе из представления базы данных и привязаны к полям <%# Bind("xx"). Затем у меня есть кнопка html (без asp control), которая отправляет параметр на страницу aspx, которая сообщает ему, чтобы вызвать метод обновления DataSource. В методе dataSource_updating я ищу элементы управления, которые содержат значения, которые я хочу сохранить. Но эти значения всегда одни и те же, как при переключении на представление редактирования. Никакие изменения, которые я делаю в текстовых или выпадающих меню, не сохраняются.

Короче говоря, вопрос о том, как сохранить значения из EditTemplate в базу данных с помощью jquery?

До сих пор я пробовал несколько согласований, которые не сработали.

  1. В методе обновления() ищет управления по FindControl и установить e.Command.Parameter["xyz"] = foundcontrol.SelectedValue;. Значения всегда совпадают с значениями в начале.

  2. <asp:parameter name="SampleValue" /> и в EditTemplate <asp:TextBox Value='<%# Bind("SampleValue")#> Значения всегда равны нулю.

  3. Установить скрытое поле ввода с выбранным значением с помощью javascript. Это не работает, как управление в EditTemplate видны только после перехода в режим редактирования

Так что, может быть, я совершенно неправильно с моими идеями, направляясь в совершенно неправильном направлении, и это может быть достигнуто гораздо проще , но до сих пор я не знаю, как этого добиться. Я мог бы сделать это без ajax, но для удобства пользователей я предпочел бы версию с jquery.

Для всех, кто прочитал это и не запутался :-), спасибо за ваши усилия!

С наилучшими пожеланиями,

Andreas

+0

Что я забыл. Некоторые элементы редактирования заполняются DropDowns из другого DataSource, и значения должны быть записаны в другую таблицу базы данных, чем представление, из которого происходят данные. –

ответ

0

При загрузке обоих «Режимы» на FormView в ту же самую страницу с помощью AJAX, вы, вероятно, получить дубликаты имен полей. Один из них содержит неизменные значения, которые сохраняются. Как ASP.NET знает разницу? Вы только хотите отправить их из EditTemplate, для чего потребуется отдельная форма (или какой-либо другой хак).

Возможно, ваша кнопка отправки HTML не дает ASP.NET, что необходимо для повторного заполнения элементов управления. Вы используете ViewState на странице с FormView?

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

1

Я бы забыл использовать вид формы и просто использовать обычную форму html с регулярными элементами управления вводом. Верните объект из своего веб-сервиса, который имеет все ваши значения и заполнит элементы управления с помощью ajax, а затем добавьте ajax. Либо сделайте полностью asp.net, либо полностью html/jquery с задним концом asmx. В противном случае это слишком запутанно.