维护Panel的滚动条ScrollBars位置(C#)

摘要:
我们通常在面板中放置内容,例如文章、GridView控件等。当内容超过面板的高度和宽度时,您可能需要滚动条来控制它。ScrollBar的选项包括:成员名称描述Auto可以根据需要显示水平滚动条、垂直滚动条或两者。无不显示滚动条。为了演示如何控制ScrollBar的演示,基本思想是在提交时通过两个HiddenField记录面板的ScrollLeft和ScrollTop的值。当IsPostBack时,当两个HiddenField的值重置为面板的ScrollLeft时,scrllTop。Html代码在页面中放置两个面板,一个作为容器,另一个作为内容。

我们常将内容放在Panel中,例如文章,GridView控件等....。当内容超出Panel的高、宽时,可能就需要滚动条来进行控制。 当点击页面中按钮产生PostBack时,滚动条总是会回到最上面的位置,我们现在要解决的主要就是这个问题。

ScrollBar的可选项有:
  成员名称
 说明
 
  Auto
 根据需要,可显示水平滚动条、垂直滚动条或这两种滚动条。要不然也可以不显示任何滚动条。
 
 Both
 同时显示水平滚动条和垂直滚动条。
 
 Horizontal
 只显示水平滚动条。
 
 None
 不显示滚动条。
 
 Vertical
 只显示垂直滚动条。
 

演示如何控制ScrollBars的Demo,基本思路是通过两个HiddenField在Submit时纪录下Panel的scrollLeft,scrollTop的值,当IsPostBack时,当两个HiddenField的value重新设置给Panel的scrollLeft,scrllTop.

Html代码
 在页面中放两个Panel,一个做为容器,一个做为内容(只为演示作用)。

...@ Page Language="C#" AutoEventWireup="true" CodeFile="ControlPanelScrollBarSample.aspx.cs" Inherits="ControlPanelScrollBarSample" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>演示如何控制Panel的滚动块</title>
</head>
<body>
    <form   runat="server">
    <div style="text-align:center;">
    <asp:Panel   runat="server" ScrollBars="Auto"   Height="400px">
    <asp:Panel   runat="server" Width="90%">
    </asp:Panel>
    </asp:Panel>
        <br />
        <asp:Button   runat="server" Text="点击确发PostBack,查看滚动块的位置" />
    </div>
    </form>
</body>
</html>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/llxchen/archive/2008/01/31/2074979.aspx
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class ControlPanelScrollBarSample : System.Web.UI.Page
...{
    protected void Page_Load(object sender, EventArgs e)
    ...{
            FillContentPanel();
            HandlePanelScrolBar();
    }

    private void HandlePanelScrolBar()
    ...{
        //定义两个HiddenField,分别纪录Panel的ScrollBar的X与Y位置
        HiddenField HF_ScrollPosX = new HiddenField();
        HiddenField HF_ScrollPosY = new HiddenField();

        HF_ScrollPosX.ID = "ScrollPosX";
        HF_ScrollPosY.ID = "ScrollPosY";
        form1.Controls.Add(HF_ScrollPosX);
        form1.Controls.Add(HF_ScrollPosY);

        //生成JS:将Panel的ScrollBar的X,Y位置设置给两个HiddenField
        string script;
        script = "window.document.getElementById('" + HF_ScrollPosX.ClientID + "').value = "
                  + "window.document.getElementById('" + P_Container.ClientID + "').scrollLeft;"
                  + "window.document.getElementById('" + HF_ScrollPosY.ClientID + "').value = "
                  + "window.document.getElementById('" + P_Container.ClientID + "').scrollTop;";

        this.ClientScript.RegisterOnSubmitStatement(this.GetType(), "SavePanelScroll", script);

        if (IsPostBack) //如果是PostBack,将保存在HiddenField的ScrollBar的X,Y值重设回给Panel的ScrollBar
        ...{
            script = "window.document.getElementById('" + P_Container.ClientID + "').scrollLeft = "
                    + "window.document.getElementById('" + HF_ScrollPosX.ClientID + "').value;"
                    + "window.document.getElementById('" + P_Container.ClientID + "').scrollTop = "
                    + "window.document.getElementById('" + HF_ScrollPosY.ClientID + "').value;";

            this.ClientScript.RegisterStartupScript(this.GetType(), "SetPanelScroll", script, true);
        }
    }
   
    /**//// <summary>
    /// 填充内容数据,视情况可使外Panel产生滚动条即可
    /// </summary>
    private void FillContentPanel()
    ...{
        Literal l = new Literal();
        string context = "";

        for (int i = 0; i < 100; i++)
        ...{
            context += "<BR>" + i + "行  中华人民共和国中华人民共和国!!!";    
        }

        l.Text = context;
        P_Content.Controls.Add(l);
    }
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/llxchen/archive/2008/01/31/2074979.aspx


我第一次做的时候,因为页面加了UpdatePanel控件,演示没有效果,后来我没有加UpdatePanel这个控才会成功,这个问题,我在网上苦苦找了几个小时,最后这个才是最佳答案。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/llxchen/archive/2008/01/31/2074979.aspx

免责声明:文章转载自《维护Panel的滚动条ScrollBars位置(C#)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android平台Airplay的实现方法Android 自定义CheckBox 样式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Table显示滚动条

Table显示滚动条,要先把table放到一个div中,div的长度和宽度要固定,控制overflow属性为scroll ˂!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--˃<div style="...

Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB)。本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)。1. 配置CDB中的实例参数(ALTER SYSTEM)配置CDB实例参数和配置非CDB实例参数没什么不一样。ALTER SYSTEM命令用来设置初始化参数,而有些数据库配置修改需要...

数据基本类型以及相关举例

数据基本类型: 整型:字节型byte 短整型short  整型int  浮点类型:长整形long  浮点型  fioat   双精度性double  字符型:char  布尔型:boolean   引用类型( reference): 类class   接口interface   数据  array     循环:for   while      do wh...

滚动条样式修改

::-webkit-scrollbar {width:5px;//对垂直流动条有效 height:10px;//对水平流动条有效 } //定义滚动条的轨道颜色、内阴影及圆角 ::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:t...

17.异常(三)之 e.printStackTrace()介绍

一、关于printStackTrace()方法 public void printStackTrace()方法将此throwable对象的堆栈追踪输出至标准错误输出流,作为System.err的值。输出的第一行是此对象的toString()方法的结果,剩余行表示以前由方法 fillinStackTrace() 记录的数据。此信息的格式取决于实现,但以下示例...

【C#】使用OWIN创建Web API

OWIN的介绍 OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦,使得便携式 .NET Web 应用以及跨平台的愿望成为现实, 标准的 OWIN 应用可以在任何 OWIN 兼容的服务器上运行,...