解决ASP.NET回传后div滚动条位置复位的问题(利用隐藏控件原理)

首先是为DIV添加一个onscroll="javascript:setScollTop()" 的方法(当然不一定是DIV其他的标签思路应该也是这样的)


代码如下:

<div style="overflow: auto; height: 152px" align="left" id="dvScoll_1"   onscroll="javascript:setScollTop()">
www.jb51.net
......
</div>

这里setScrollTop方法就是每次滚动条滚动的时候,把div的ScrollTop的值赋给一个隐藏控件。代码如下

代码如下:

function setScollTop()
  {
     document.getElementById("<%=hidScrollTop.ClientID%>").value=document.getElementById("dvScoll_1").scrollTop;
  }

因为每次.net回发滚动条都会复位,所以这里我们 在Page_Load中给DIV的ScrollTop重新赋值了。代码如下

代码如下:

if (!IsPostBack)
                {
                   。。。。。
                }
                else
                {
                    //恢复滚动条位置
                    if (this.hidScrollTop.Value!="")
                    {
                        string scrollTop = this.hidScrollTop.Value;
                        string strScript="document.getElementById('dvScoll_1').scrollTop="+scrollTop;
                        RegisterScriptBlock(this.Page, strScript);
                    }
                }

这里的RegisterScriptBlock是我写的一个方法,放在公共类库里的,如下所示。

代码如下:

/// <summary>
    /// 注册脚本块
    /// </summary>
    public static void RegisterScriptBlock(System.Web.UI.Page page, string _ScriptString)
    {
        page.ClientScript.RegisterStartupScript(page.GetType(), "scriptblock", "<script type='text/javascript'>" + _ScriptString + "</script>");
    }

(0)

相关推荐

  • asp.net通过Ajax UpdatePanel回传后滚动条位置变更解决方法

    主要方法是: 用一个隐藏控件保存当前scorll值.回传回来后根据scroll的值在重新设置scroll. 1.首先用onscroll事件保存scorll值,并用HiddenField记录scroll值 复制代码 代码如下: <div id="lv_content" class="unify_content" style="padding-left: 0; height: 455px;" onscroll="SetScrollPo

  • Asp.net保持页面滚动条位置(页面提交后不变)

    一般来说很多的人在控制浏览器滚动条都是用Page.SmartNavigation = False,对于页面中DIV等等的滚动条控制,我在看了别人代码后,写了一个,仅供参考: 复制代码 代码如下: Public Shared Sub SaveDivScrollPosition(ByVal divIDArray As String, ByVal objPage As Page) Dim saveScrollPosition As String Dim i As Integer Dim divID()

  • ASP.Net刷新页面后自动滚动到原来位置方法汇总

    在网上搜索之后总结了三种方式: 1.设置Page中的MaintainScrollPositionOnPostback属性为true A>.页面里有MaintainScrollPositionOnPostback,默认是false,设为true即可(页面级) 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  Mai

  • 解决ASP.NET回传后div滚动条位置复位的问题(利用隐藏控件原理)

    首先是为DIV添加一个onscroll="javascript:setScollTop()" 的方法(当然不一定是DIV其他的标签思路应该也是这样的) 复制代码 代码如下: <div style="overflow: auto; height: 152px" align="left" id="dvScoll_1"   onscroll="javascript:setScollTop()">www

  • Vue实现渲染数据后控制滚动条位置(推荐)

    需求场景如下: 实现了消息发送,如果容器内消息过多,会出现滚动条,最新的消息位于最底部,不能及时出现在可视区域内,此时就需要在渲染列表后,将滚动条的位置定位到最底部.先来看看最终实现的效果 实现思路 渲染完数据后,通过refs对象获取消息容器的实际高度 将滚动条的设置到最底部 实现过程 sendMessage: function (event) { // 数据渲染 this.senderMessageList.push(thisSenderMessageObj); // 改变滚动条位置 this

  • asp.net+jquery滚动滚动条加载数据的下拉控件

    这样的需求貌似自己感觉不是很合理,因为数据多了如此下拉无论从人还是机器操作都比较痛苦. 没办法由于需求下来了,只能按需求操作.网上找了很多相关控件都感觉有点庞大,占资源比较多.没办法自己花半天时间弄出个半成品自定义控件,拿出来分享下,如有高手看了请多指点. 需求:AJAX滚动滚动条加载数据的下拉列表 控件名称:Webcombo 所用技术:ASP.NET(C#),jQuery,ASP.NET一般处理文件(.ashx) 下拉列表具体实现:用DIV模拟下拉列表,input和图片模拟下拉框.最终结果如下

  • 在ASP.NET 2.0中操作数据之四十九:为GridView控件添加RadioButton

    导言: GridView控件提供了大量的内置功能.它包含了一系列的域(field)来显示诸如text.images.hyperlinks和buttons.另外它支持模板(template)用于用户自定义界面.我们可以构建这样一个GridView控件,用户仅需要点击控件里的一个按钮,每一条记录行都可以选择.编辑.删除.除了控件本身内置的功能外,在某些情况下,我们添加一些额外的.控件没有内置的功能.在本章及接下来的2篇教程里我们将探讨如何优化GridView,以支持额外的功能. 本篇及接下来的教程将

  • 在ASP.NET 2.0中操作数据之五十三:在Data Web控件显示二进制数据

    导言: 在前面的教程我们阐述了应用程序处理二进制数据的2种模式,以及使用FileUpload 控件从浏览器向服务器文件系统上传文件.当文件上传并存储在文件系统里时,应在相应的数据库记录里存储该文件的存储路径. 我们先来看如何为最终用户提供二进制数据.怎样展示二进制数据呢?这取决于其类型.比如图片,我们将其显示为image:如果是PDFs,Microsoft Word文档.ZIP文件或其它类型的数据,或许提供一个"Download"链接比较妥当. 在本节,我们看如何在GridView和D

  • 在ASP.NET 2.0中操作数据之四十八:对SqlDataSource控件使用开放式并发

    导言: 在前面的教程里,我们考察了如何为SqlDataSource控件添加插入.更新.删除功能.简而言之,就是为其nsertCommand, UpdateCommand和DeleteCommd属性赋以相应的INSERT,UPDATE和DELETESQL语句,并将相应的参数放置在<InsertParameters>, <UpdateParameters>和<DeleteParameters>标签里.我们可以手工书写这些代码,也可以通过在设置数据源向导里单击"高级

  • 利用ActiveX控件InetCtls.Inet在ASP中实现新闻小偷

    这几天维护网站的时候要加很多的新闻或者其它文章,因为经常到一个网站上找文章,所以就想,能不能做个程序,指定一个网址,让ASP去搜索这个网址上所有的文章,进而把搜索回来的文章进行分析,把文章内容保存到数据库里,这样不就可以省去很多麻烦了吗? 后来才知道,这个想法早就有人想过,也有人做过新闻小偷,呵呵,不过据说是php的,我没见过,呵呵,反正报着一种开发的心态开始进行工作-- 我记得以前收集的有一篇文章介绍的有如何用ASP获取别人的网页,拿出来一看,嗨,没几句代码: URL = http://new

  • 在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据

    导言 到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构.数据访问层和业务逻辑层分别在教程第一和第二章提到.在Displaying Data With the ObjectDataSource 这篇教程里,我们探讨了怎样用ASP.NET 2.0的新控件--ObjectDataSource控件在表现层展示数据. 本教程到目前为止用这种层次结构来处理数据.然而绕过这种体系结构,通过直接把数据查询和业务逻辑放在Web页面上,也可以达到直接在ASP.NET页面上访问,插入,更

  • 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField

    导言 GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中.最简单的字段类型是BoundField,它仅将数据简单的显示为文本.其他的字段类型使用交互HTML元素(alternate HTML elements)来显示数据.比如说,CheckBoxField将被呈现为一个CheckBox,其选中状态由某特定数据字段的值来决定:ImageField则将某特定数据字段呈现为一个图片,当然,这个数据字段中应该放的是图片类型的数据.

  • ASP.NET 4中的可扩展输出缓存(可以缓存页面/控件等)

    输出缓存的前世今生 ASP.NET 1.0引入输出缓存的概念,这使得开发者可以缓存页面.控件.控制器以及HTTP响应的输出到内存中.在后续的Web请求,ASP.NET就可以使用缓存中的内容更快响应. ASP.NET的输出缓存系统足够灵活,使得我们可以根据不同的查询字符串或者表单post参数来缓存不同版本的内容.例如test.aspx?category=Vegerable 和 test.aspx?category.aspx?category=Meat.它也允许我们根据浏览器类型或者用户语言偏好来缓

随机推荐