1

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

4

2 回答 2

0

使用 jQuery。

首先是附加模糊事件处理程序,您可以在其中调用 ajax 方法向服务器传递文本框的新值。在服务器端处理此 ajax 事件并将您的数据写入数据库或其他任何地方。

这是一段可能会有所帮助的代码。

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

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

于 2013-04-09T12:09:23.127 回答
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只需要执行一次,但是如果您不检查它是否是回发,这会带来问题,因为这样每次您离开文本框时它都会执行。

于 2013-04-09T12:17:34.767 回答