如何在网格视图/中继器中保持回发的滚动位置
本文关键字:位置 滚动 网格 视图 中继器 | 更新日期: 2023-09-27 18:31:12
我有一个中继器,当数据数量增加时,滚动条被放大。当我单击中继器中的任何行时,它会被选中,并在下一个div中相应地显示数据。假设我单击最后一条记录,将显示数据并且行也突出显示,但滚动转到其初始位置而不是最后一个位置。
只需在
Page_Load
中输入以下内容:
this.Page.MaintainScrollPositionOnPostBack = True
Page.MaintainScrollPositionOnPostBack 属性
protected void Page_Load(object sender, EventArgs e) { ScrolBar();}
private void ScrolBar()
{
HiddenField PosX = new HiddenField();
HiddenField PosY = new HiddenField();
HtmlControl Form1 = this.Master.FindControl("Form1") as HtmlControl;
PosX.ID = "PosX";
PosY.ID = "PosY";
Form1.Controls.Add(PosX);
Form1.Controls.Add(PosY);
string script;
script = "window.document.getElementById('" + PosX.ClientID + "').value = "
+ "window.document.getElementById('" + test1.ClientID + "').scrollLeft;"
+ "window.document.getElementById('" + PosY.ClientID + "').value = "
+ "window.document.getElementById('" + test1.ClientID + "').scrollTop;";
this.ClientScript.RegisterOnSubmitStatement(this.GetType(), "SavePanelScroll", script);
if (IsPostBack)
{
script = "window.document.getElementById('" + test1.ClientID + "').scrollLeft = "
+ "window.document.getElementById('" + PosX.ClientID + "').value;"
+ "window.document.getElementById('" + test1.ClientID + "').scrollTop = "
+ "window.document.getElementById('" + PosY.ClientID + "').value;";
this.ClientScript.RegisterStartupScript(this.GetType(), "SetPanelScroll", script, true);
}
}
对于中继器或 GridView,请尝试以下操作:将控件放在div 中并添加一个选项 OnSort
<div id="divGridView" runat="server" >
<asp:GridView ID="Grid" runat="server" OnSorting="Grid_OnSorting"
OnDataBound="Grid_DataBound" >
在代码文件上添加此方法:
protected void Grid_OnSorting(object sender, EventArgs e)
{
divGridView.Page.SetFocus(Grid);
}
您可以使用
jquery使用以下链接
http://www.sergeyakopov.com/2010/11/easily-maintaining-scroll-position-in-gridview-using-jquery