0

我想将 a 嵌入ListBoxUpdatePanel. ListBox需要启用多选,并在项目选择时触发回发。我的问题是回发时的滚动条。每次单击项目时,它都会返回顶部。我尝试了不同的方法来备份滚动位置,但总是有问题(至少在 IE8 中,我必须关注的浏览器)。要么我得到一个闪烁,要么一旦用户在回发后使用他的鼠标滚轮,滚动条就会跳回顶部。这在 Chrome 和 Mozilla 中不会发生。

我在想,也许有些东西应该起作用 - 发回而不重绘我ListBox/更新包含的 UpdatePanel ?这可能吗 ?

4

3 回答 3

1

任何完整的回发都必然会重新绘制列表视图,因此保持列表视图的滚动位置将是有问题的

智能导航

如果它是您正在努力解决的页面滚动位置的位置,那么您可以尝试智能导航

http://msdn.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx

我不认为浏览器覆盖率对此非常可靠(例如,请参阅http://forums.asp.net/p/1094179/1651390.aspx

更新面板和回发控件

如果您只是在更新面板中更新内容,那么它不应该丢失它的页面位置。确保您进行的是部分回帖,而不是全部回帖。列表框和触发回发的控件都应该在更新面板中。

但是有一些警告 - 如果您在更新面板之外有一个按钮,如果它在面板的触发器集合中,它可以触发部分回发(http://msdn.microsoft.com/en-us/library/ system.web.ui.updatepanel.triggers.aspx )

jQuery AJAX

核心选项将是使用 JQuery AJAX 或类似的,例如正确的 AJAX,而不是更新面板使用的奇怪的假中途房屋东西(并不是说它们不是很有用 - 只需要明智地使用)。JQuery AJAX 是一个在回发架构中工作的猪,所以我不一定推荐。

保持 ListBox 滚动位置

注意-如果您关心的是列表框滚动位置,则此问题

在更新面板的列表框中保持滚动位置,而不是页面

给出了一些好的建议希望对一些人有所帮助

于 2013-06-10T09:50:50.493 回答
0

我认为无论你做什么,闪烁总是会发生(闪烁实际上是浏览器分几个阶段呈现内容)。

您应该首先尝试 MaintainScrollPositionOnPostBack 页面的属性。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx

于 2013-06-10T09:45:31.480 回答
0

为什么您需要回发每个项目选择?你不是说异步回发吗?我在用户控件中的 ListBox 中遇到了类似的问题,而后者又在 UpdatePanel 中。我使用 jQuery 来处理选择和取消选择列表框中所有项目的两个按钮上的单击事件。

尝试这个:

创建一个.js 文件(例如select.js)并在其中插入您的jQuery 代码。就像是:

function pageLoad() {

    //insert code here
}

重要的是使用 pageLoad() 而不是 (document).ready。

然后,在 ScriptManager 中插入脚本引用:

<asp:ScriptManager ID="sm" runat="server" EnablePartialRendering="True">
    <Scripts>
        <asp:ScriptReference Path="~/Scripts/Select.js" />
    </Scripts>
</asp:ScriptManager>
于 2013-06-14T18:55:40.887 回答