таким образом для двухсторонней (двунаправленной) привязки данных в ASP, мы делаем это...
<asp:textbox id="txtField" runat="server"
text='<%# Bind("SomeField") %>'>
</asp:textbox>
SomeField расположен на DataSource DetailsView, который служит контейнером для текстового поля.
Кроме того, я мог сделать это из кода - позади (использование события OnDataBinding текстового поля):
protected void SomeField_OnDataBinding(object sender, EventArgs e)
{
((TextBox)sender).Text = Eval("SomeField").ToString();
}
Однако ОЦЕНКА только для чтения..., как может я указывать Связать (двухсторонний) из кода - позади?
Мне удалось найти обходной путь для моего "крайнего случая".
Я использую подтипы LLBLGen, и поэтому мне нужно переключить источник данных для подробного просмотра на основе фильтра радиокнопок, выбранного пользователем.
Я попытался "декларативно" привязаться к полю подтипа в ASP, используя <% # Bind (... Это не сработало.
Мне пришлось использовать «взлом» кода программной части, при котором я условно отображал элементы управления в подробном обзоре, используя метод предварительного рендеринга details_view.
Для каждого поля я затем условно настраиваю его одностороннюю (только для чтения) привязку в OnDataBinding ...
e.g. ((TextBox)sender).Text = Eval("FilePrefix").ToString();
Наконец, чтобы получить данные для отправки в источник данных, я взламываю события DetailsView OnItemInserting / Updating (условно как ну) ...
e.Values["FilePrefix"] = txtFilePrefix.Text;
Я чувствую себя такой грязной после этого взлома, думаю, мне нужно принять душ ...
Я все еще надеюсь, что кто-нибудь сможет предложить более чистый подход: -)
Проверяли ли вы эту страницу в MSDN, Пошаговое руководство: редактирование и вставка данных на веб-страницы с помощью серверного веб-элемента управления DetailsView ?