我在一个页面上有几个文本框。我想将文本保存在相应TextBox
的LostFocus
. 这是为了确保在电源故障或互联网连接丢失时数据不会丢失。我怎样才能完成这样的事情?
问问题
498 次
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 回答