我的网络表单中有许多 TB 绑定到后面代码中的属性:

<asp:TextBox ID="tbFirstName" Text="<%# Contact.FirstName %>" runat="server" />
<script language="c#">
    public Contact Contact
    {
        get
        {
            return (Contact)ViewState["Contact"];
        }
    }
</script>
<script language="VB">
    Public ReadOnly Property Contact() As Contact
        Get
            return ViewState("Contact");
        End Get
    End Property
 </script>

而“联系”就是该属性。

我希望当用户插入文本时,它应该立即绑定到联系人对象,例如当用户按下某个键甚至失去焦点时(TextChanged)也很好。

有没有办法动态地执行此操作(而不是手动从所有 TB 检索数据并更新联系人对象)?

我实际上愿意通过在表单主体中传播的简单文本框来实现双向数据绑定。

笔记:当然,我不会将这些项目存储到数据库中,我只想要驻留在状态管理器中的对象(联系人)。

有帮助吗?

解决方案

您知道您正在谈论 Web 应用程序吗?它在用户的浏览器中运行。为了更新数据库,您必须通过 AJAX 或回发来往返服务器。您真的想每次击键都执行此操作吗?


从您的评论中可以看出,您显然并没有尝试在每次击键时都写回数据库。

不过,数据绑定并不是这样工作的。数据绑定是 ASP.NET 中纯粹的服务器端操作。即使 Bind 方法提供的双向数据绑定也只能在完整回发时起作用(尽管我承认我还没有使用 UpdatePanel 尝试过)。

作为实验,创建一个新页面,并设置双向数据绑定(请参阅《使用 FormView 获得更灵活的数据修改用户界面》) 插入、更新和删除数据概述 举个例子)。一旦你让它“正常”工作,尝试将 FormView 放入 UpdatePanel 中,看看 Bind 是否仍然有效。如果是这样,请查看是否可以让 UpdatePanel 在每次击键时触发。

其他提示

停止思维像你正在开发一个桌面应用程序!由于哟都没有。 “接触”对象居住在服务器上,而你的文本框“住”在客户端,刷新服务器对象将是非常昂贵的,你必须做服务器,并用新的数据在客户端之间的异步传输,而且做起来在这样的短裤间隔将甚至是不可能的。以为你可以在文本框之后,则可以将数据传输到服务器增加一个延迟。为什么你需要这个?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top