1.在页面中新增一个方法
private void KeepScrollPosition(Control p)
{
HiddenField oScrollPosX = new HiddenField();
HiddenField oScrollPosY = new HiddenField();
oScrollPosX.ID = p.ClientID + "X";
oScrollPosY.ID = p.ClientID + "Y";
this.Form.Controls.Add(oScrollPosX);
this.Form.Controls.Add(oScrollPosY);
string sScript = "window.document.getElementById('" + oScrollPosX.ClientID + "').value =" +
"window.document.getElementById('" + p.ClientID + "').scrollLeft;";
sScript = sScript + "window.document.getElementById('" + oScrollPosY.ClientID + "').value = " +
"window.document.getElementById('" + p.ClientID + "').scrollTop;";
this.ClientScript.RegisterOnSubmitStatement(this.GetType(), "", sScript);
if (IsPostBack)
{
oScrollPosX.Value = this.Request.Form[oScrollPosX.ClientID];
oScrollPosY.Value = this.Request.Form[oScrollPosY.ClientID];
sScript = "window.document.getElementById('" + p.ClientID + "').scrollLeft = " + oScrollPosX.Value + ";" +
"window.document.getElementById('" + p.ClientID + "').scrollTop = " + oScrollPosY.Value + ";";
this.ClientScript.RegisterStartupScript(this.GetType(), "", sScript, true);
}
}
2.在页面中设置需要设置滚动条的控件放在一个div或Panel中。
示例如下:
<div runat="server" id="sp" style="width: 100%; height: 450px; overflow:auto">
//这里是DataGrid...
</div>
3.在页面中调用基类中的KeepScrollPosition方法
protected override void Page_Load(object sender, EventArgs e)
{
base.Page_Load(sender, e);
//调用
KeepScrollPosition(this.sp);
//其他代码...
}