FAQ: Is it possible to prevent a Web form from scrolling to the top of the page when it posts back to the server? 
http://www.wintellect.com/resources/faqs/default.aspx?faq_id=1&page=7#6

解决方案 »

  1.   

    不对啊,比如我在客户端通过与服务器交互,在ListBox添了几个ListItem,每次刷新得时候这些记录就消失了,:(顺便问一下,点击页面中某一处与服务器 交互得地方,都触发了什么事件,每次刷新得时候都出发了什么事件?
      

  2.   

     把为ListBox绑定数据的语句写在if(!this.Page.IsPostBack){}里
      

  3.   

    每次刷新都触发了Page_Load事件,
    但只限于IsPostBack=true里的内容
      

  4.   

    我这个程序用if(!this.Page.IsPostBack){}不行(不能用)我能否点击某一按钮,只是每隔一段时间就刷新一个控件,而不是整个页面呢?
      

  5.   

    刷新一个控件,你就要考虑用Javascript脚本去控制了。
    考虑用这两个函数setInterval 和setTimeout 。
    取得数据可以用Web Service.HTC调到web service.
    当然也还有其它的方法。
      

  6.   

    用iframe吧,把要刷新的控件放到iframe中。象楼上说的办法再用Javascript脚本去控制。
      

  7.   


    使用服务器端控件,并且设置EnableViewState=true
      

  8.   

    可能我说的不清楚!我出现的问题是这样的:我做了一个实时监测的页面,每隔20秒就要取一次新数据(刷新页面)
    在页面上有一个控制台(用Panel,里面有ListBox,载有所有的监测点),和两个客户端按钮(“显示控制台”和“隐藏控制台”),
    通过这两个按钮,我用javascrip控制控制台的显示和隐藏当我点“显示控制台”,控制台逐渐移到屏幕中央,选中控制台里的监测点的时候,就在页面上画这些监测点的实时曲线,我希望如果我不点“隐藏控制台”,页面状态保持不变(除了不断画曲线),但是当页面刷新的时候,ListBox中原来选中的内容消失了,控制台也消失了(控制台其实位置为-350)我改怎么办?是不是真的没法解决???
      

  9.   

    可能我说的不清楚!我出现的问题是这样的:我做了一个实时监测的页面,每隔20秒就要取一次新数据(刷新页面)
    在页面上有一个控制台(用Panel,里面有ListBox,载有所有的监测点),和两个客户端按钮(“显示控制台”和“隐藏控制台”),
    通过这两个按钮,我用javascrip控制控制台的显示和隐藏当我点“显示控制台”,控制台逐渐移到屏幕中央,选中控制台里的监测点的时候,就在页面上画这些监测点的实时曲线,我希望如果我不点“隐藏控制台”,页面状态保持不变(除了不断画曲线),但是当页面刷新的时候,ListBox中原来选中的内容消失了,控制台也消失了(控制台其实位置为-350)我改怎么办?是不是真的没法解决???
      

  10.   

    用一个全局变量来保存ListBox的选项这样当页面刷新的时候,所选值不会丢失
        
      

  11.   

    把你控制控制台显示隐藏的 JavaScript 代码直接写在页面中<scripts language='javascript'>
    .....
    </scripts>页面刷新后,会自动执行这些代码。
      

  12.   

    用一个全局变量(初始值为0)来判断Page.IsPostBack的值,当Page.IsPostBack==false时,赋初为1,当再次刷新时根据全局变量来进行相关操作。
      

  13.   

    好象aspx中的服务器端控件都有aotupostback属性,可以用来保持状态
      

  14.   

    如果保存复杂的表单,就得结合后台脚本与javascript来实现,我一般多用HTML控件,简单的可用类似这样的方法来保存状态:
    <input name="hName" type=hidden value="<% =Reponse.Param["hName"].ToString() %>">
      

  15.   

    因为每次刷新客户端都会把最近一次提交服务器的内容重新提交服务器,所以你在客户端做的改变在刷新后都会丢失的.所以你不要用客户端来控制控制台的显示和隐藏,而由服务端来控制就行了.两个按钮的点击事件在服务端响应,来控制控制台的显示和隐藏.
    同样ListBox也设为aotupostback=true,改变值后由服务端来处理.