【发布时间】:2017-01-05 14:14:57
【问题描述】:
我有一个 Web 控件,它是用户填写的长表单。一路上有很多检查,很多滚动和很多回发。
对于每个按钮单击或回发操作(单选、下拉更改),我在后面的代码中使用它:
Page.MaintainScrollPositionOnPostBack = True
按预期工作。它滚动回调用它的那个按钮或事件。 但是,在 web 控件上,有一个更新面板:
<asp:PlaceHolder runat="server" ID="plFingerprint" Visible="false">
<tr>
<td colspan="2" class="l">
<asp:UpdatePanel ID="updatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<uc1:Listener id="tidListener" runat="server" />
<a href="FingerBio:match,--=7392=--,<%= tidListener.SessionID.ToString() %>,<%= ReplyIndex.BaseSiteUrl %>">
<img id="Img1" runat="server" src="~/images/finger.png" class="scan"
alt="Scan Finger" /></a>
<asp:Label ID="matchlabel" runat="server"></asp:Label>
<div style="display: none">
<asp:Label ID="matchIDLabel" runat="server"></asp:Label></div>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</asp:PlaceHolder>
这本质上是一个指纹扫描仪,每 15 秒刷新一次以获取任何新指纹。基本上发生的情况是,用户将在表单下方很好地捕获数据,当间隔开始时,面板被更新并且屏幕被定位回顶部(顺便说一句,这是更新面板所在的位置)。它从链接到该站点的 Web 服务中读取数据。
现在这至少可以说是令人沮丧的。用户抱怨屏幕一直在跳动。
我有
Page.MaintainScrollPositionOnPostBack = True
它需要的任何地方,但这并不能阻止更新面板接管。
我想使用锚点,但这不适用于我们的网站结构。
还有什么我可以尝试的吗?我希望更新面板继续正常更新,每 15 秒一次,而不是每次都重新定位屏幕。
这可以在 Javascript 中完成吗?后面的代码?像改变表单本身这样简单的事情?
编辑
这是在该控件本身上:
<asp:Timer ID="timerTid" runat="server" Interval="1500" OnTick="timerTid_Tick">
在用户使用或未使用此功能后,我可以在代码中设置时间间隔吗?
【问题讨论】:
标签: asp.net vb.net updatepanel