Я пытаюсь выполнить двустороннюю привязку данных к элементам управления в моем элементе управления пользователя, который размещен внутри шаблона FormView:Двусторонняя привязка данных элементов управления в пользовательском элементе управления, вложенном внутри FormView, не работает
<asp:ObjectDataSource runat="server" ID="ObjectDataSource"
TypeName="WebApplication1.Data" SelectMethod="GetItem" UpdateMethod="UpdateItem">
</asp:ObjectDataSource>
<asp:FormView runat="server" ID="FormView" DataSourceID="ObjectDataSource">
<ItemTemplate>
<uc:WebUserControl1 runat="server"></uc:WebUserControl1>
</ItemTemplate>
<EditItemTemplate>
<uc:WebUserControl1 runat="server"></uc:WebUserControl1>
</EditItemTemplate>
</asp:FormView>
управления веб-пользователя:
<%@ Control Language="C#" ... %>
<asp:TextBox runat="server" ID="TitleTextBox" Text='<%# Bind("Title") %>'>
</asp:TextBox>
связывания отлично работает, когда FormView находится в режиме просмотра, но при переходе в режим редактирования, при вызове UpdateItem
на FormView, переплеты теряются. Я знаю это, потому что FormView пытается вызвать метод обновления на объекте ObjectDataSource, у которого нет аргумента под названием «Заголовок».
Я попытался решить эту проблему, выполнив IBindableTemplate
для загрузки элементов управления, находящихся внутри моего пользовательского элемента управления, непосредственно в шаблоны (как если бы я ввел их декларативно). Однако при вызове UpdateItem
в режиме редактирования container
, который передается в метод шаблона ExtractValues
, больше не содержит TextBox. Это было в режиме просмотра!
Я нашел несколько вопросов о SO, которые относятся к этой проблеме, но они скорее устарели, и они не дают ответов, которые помогли мне решить эту проблему.
Как вы думаете, я могу решить эту проблему? Кажется, это простое требование, но, видимо, это что-то вроде этого ...
Добро пожаловать в Переполнение стека. Это не похоже на вопрос OP –
Это может быть правдой, но это было актуально. Я нашел этот ответ простым и полезным. –