当失去焦点时,如何保持文本框的更改?

时间:2013-04-09 12:06:33

标签: asp.net .net

我在页面上有几个文本框。我想将文字保存在TextBox的相应LostFocus上。这是为了确保在电源故障或互联网连接丢失时数据不会丢失。我怎样才能完成这样的事情?

2 个答案:

答案 0 :(得分:0)

使用jquery。

首先关注blur blur事件处理程序,在其中调用ajax方法向服务器传递文本框的新值。 在服务器端处理此ajax事件,并将数据写入数据库或其他任何位置。

这是一段可能有用的代码。

$('#textbox_id').blur(function() {
  $.ajax({url:"handler_url.ashx?textbox_value=" + $('#textbox_id').val()});
});

然后在服务器上创建ashx处理程序并使用ProcessRequest方法处理您的请求。从那里您可以访问Request.QueryString,其中将存储文本框的新值。

答案 1 :(得分:0)

另一种解决方案是使用UpdatePanel。然后,您可以利用服务器端事件而不是事件处理程序。你的标记可能看起来像这样:

<asp:ScriptManager ID="ScriptManager" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
        <asp:TextBox ID="SomeTextBox" runat="server" TextChanged="SomeTextBox_TextChanged" AutoPostBack="true" />
    </asp:UpdatePanel>
</asp:ScriptManager

然后在TextChanged处理程序中,您可以完成工作。

说明: TextChanged事件将在回发发生时实际更改文本的文本框中触发。 AutoPostBack属性是必需的,因此当文本框失去焦点时,页面实际上会回发

最后要记住的一点是,您可能需要在this.IsPostBack处理程序的页面上使用Load,因为每次更新控件时都会重新构建页面。常见的是Load处理程序中的逻辑只需要执行一次,但如果你没有检查它是否是回发邮件会产生问题,因为它会在你离开时每次都执行文本框。