我在页面上有几个文本框。我想将文字保存在TextBox
的相应LostFocus
上。这是为了确保在电源故障或互联网连接丢失时数据不会丢失。我怎样才能完成这样的事情?
答案 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
处理程序中的逻辑只需要执行一次,但如果你没有检查它是否是回发邮件会产生问题,因为它会在你离开时每次都执行文本框。