gpt4 book ai didi

c# - 如何滚动到 GridView 中的选定行

转载 作者:行者123 更新时间:2023-11-30 12:49:51 24 4
gpt4 key购买 nike

我有一个 PageSize = 20(20 行)的 GridView,但它只能显示 10 行而没有出现垂直滚动条。

我的问题是,当发生回发时,即使我选择了不同的行,它也会跳转到网格的顶行。我想滚动到选定的行。我该怎么做?

最佳答案

在页面指令中添加 MaintainScrollPositionOnPostback

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback ="true"%> 

另一种方法,使用包装 GridView 的 DIV 的 scrollTop 方法:

private void ScrollGrid()
{
int intScrollTo = this.gridView.SelectedIndex * (int)this.gridView.RowStyle.Height.Value;
string strScript = string.Empty;
strScript += "var gridView = document.getElementById('" + this.gridView.ClientID + "');\n";
strScript += "if (gridView != null && gridView.parentElement != null && gridView.parentElement.parentElement != null)\n";
strScript += " gridView.parentElement.parentElement.scrollTop = " + intScrollTo + ";\n";
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "ScrollGrid", strScript, true);
}

编辑: 由于以下几个原因,这将不起作用:

1) 如果 gridView 位于 NamingContainer 控件内,例如 Panel,因为客户端的 Id 不是 ClientId。您需要改用控件的 UniqueId

2) 你不能相信行高来计算滚动位置。如果任何一列中的文本换行超过一行,或者任何一行包含高于样式的内容,则该行的大小将不同

3) 不同的浏览器可以有不同的行为。您最好使用 jQuery scrollTop()scroll() 函数。要使用它们,您必须在客户端使用 scrollTop 并设置可在服务器端读取的 HiddenControl 的值以重置位置。在客户端呈现之前,您无法在浏览器中获取行的高度。

关于c# - 如何滚动到 GridView 中的选定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10512937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com