【发布时间】:2011-03-03 23:18:10
【问题描述】:
我正在尝试对我的用户控件中的控件执行双向数据绑定,该控件托管在 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 处于查看模式时绑定工作正常,但当我切换到编辑模式时,在 FormView 上调用 UpdateItem 时,绑定丢失。我知道这一点是因为 FormView 尝试在没有名为“Title”的参数的 ObjectDataSource 上调用更新方法。
我尝试通过实现IBindableTemplate 来解决这个问题,将我的用户控件中的控件直接加载到模板中(就像我以声明方式输入它们一样)。但是,当在编辑模式下调用 UpdateItem 时,传递给模板的 ExtractValues 方法的 container 不再包含 TextBox。在查看模式下确实如此!
我在 SO 上发现了一些与此问题相关的问题,但它们已经过时,并且没有提供任何帮助我解决此问题的答案。
您认为我可以如何解决这个问题?这似乎是一个如此简单的要求,但显然不是这样......
【问题讨论】:
标签: asp.net data-binding .net-3.5