自动保存动态创建的控件的最佳方法
本文关键字:控件 方法 最佳 创建 保存 动态 | 更新日期: 2023-09-27 18:07:00
我想做什么
我有一个。aspx网页显示动态创建的控件,主要是复选框,标签,文本框。控件位于Repeater中的PlaceHolder中。我要做的是自动保存更改。
我读了很多书,想知道我应该怎么做,我相信我有以下选择。
- 使用SetInterval 定时自动保存
- 更改时保存
现在我正在尝试做后一种选择,它确实会自动保存,但正如许多其他人在阅读中提到的那样,它闪烁和标签令人沮丧,因为它失去了焦点。
我已经尝试过AutoPostBack,它的工作原理,但它又不是那么用户友好,因为闪烁和标签问题。
我也尝试过JQuery AJAX功能,它的工作原理,但在可用性同样的问题。由于我是AJAX的新手,我不确定在中继器中为每个控件使用ScriptManager
和UpdatePanel
是否是一个好的做法。
要在动态创建的控件中自动保存值并避免闪烁和标签问题(失去焦点等),我应该采取什么方法?
事情总是需要时间的,但是你可以使用一些javascript,一些页面脚本和一个服务。
使用Toolkitscriptmanager和Ajax服务引用到另一个asmx,它将处理保存东西所需的调用。
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"
EnablePageMethods ="true" >
<Services>
<asp:ServiceReference path="saveMyvalues.asmx" />
</Services>
</asp:ToolkitScriptManager>
然后在一些javascript中,当你的自动保存定时器触发;将要保存的值传递给asmx页面,该页面将处理值....
的保存。之类的…
function saveAsingleTextbox(sndr){
saveMyvalues.saveATextBox(sndr.id, sndr.value);
}
您将需要脚本遍历所有控件或目标每个…
但是一个更好的方法是有选择地触发单个项目,因为它们被改变了…
您可以通过在页面加载时添加触发器来实现这一点…
<asp:TextBox ID="tb_FirstName" runat="server"></asp:TextBox>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack = False Then
tb_FirstName.Attributes.Add("onChange", "saveAsingleTextbox(this);")
End If
End Sub
因此,Javaxscript触发器被添加到文本框中,以调用将其值传递给ASMX页面的函数,该页面在更改时保存它…