为什么当自动回发打开时,asp.net 列表框总是在选择项目时滚动到顶部?我怎样才能防止这种情况发生?
问问题
5228 次
4 回答
4
我在 javascript 中添加了以下 jquery 来解决这个问题。我不记得我在哪里找到了解决方案,但它就在这里。只需添加目标控件的位置 - $get('YourDiv_YourPanel')。
<script type="text/javascript">
//Maintain scroll position in given element or control
var xInputPanel, yInputPanel;
var xProductPanel, yProductPanel;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
yInputPanel = $get('MainContent_InputPanel').scrollTop;
yProductPanel = $get('MainContent_ProductPanel').scrollTop;
}
function EndRequestHandler(sender, args) {
$get('MainContent_InputPanel').scrollTop = yInputPanel;
$get('MainContent_ProductPanel').scrollTop = yProductPanel;
}
</script>
于 2012-10-25T13:33:16.453 回答
3
我遇到了同样的问题,我想出了一种使用更新面板的方法。我相信这是由于列表框在回发时更新,因此更新面板可以帮助我们确保它不会更新。确保列表框位于条件更新面板内,其中子项作为触发器设置为“false”:
<asp:UpdatePanel runat="server" ID="updtpnlSearchResults" UpdateMode="Conditional" ChildrenAsTriggers="false">
现在,将列表框选择更改时需要更改的内容放在它自己的更新面板中。这样列表框就不会被刷新。
于 2013-09-18T20:44:43.657 回答
0
你需要这个页面指令:
<%@ Page MaintainScrollPositionOnPostback="true" ... %>
于 2011-09-01T18:29:58.563 回答
-3
你有几个选择。您可以在页面指令中将 MaintainScrollPositionOnPostBack 设置为 true,也可以将列表框放在更新面板中并使用 AJAX 来保持滚动位置。
页面指令选项:
<pages maintainScrollPositionOnPostBack="true" />
更新面板选项:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ListBox ID="ListBox1" runat="server" ...>
</ContentTemplate>
</asp:UpdatePanel>
于 2011-09-01T18:39:08.527 回答