滚动到GridView所选行

时间:2015-08-18 01:37:36

标签: asp.net webforms

我有一个带有固定标题和10行的GridView,可以由用户更新新行。  在GridView中,我只显示3行和垂直滚动条。

用户选择GridView上的任何行(发生回发)后,我想将其滚动到所选行。

我该怎么做?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您使用winform,则需要设置

dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.SelectedRows[0].Index;

答案 1 :(得分:0)

这是我想出的解决方案。它绝对不是完美的,因为我只是JavaScript的新手。欢迎进行所有修改。

首先...要注意

  

“出现在命名容器中的任何服务器控件都具有   其呈现的ID值以命名容器的ID为前缀   控制。”

来自https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-getting-started/master-pages/control-id-naming-in-content-pages-cs

简而言之...您有一个隐藏字段可保存滚动框顶部的值...并在页面加载时将其设置回该值。所有代码都使用JavaScript。

1:创建隐藏字段。

    <input type="hidden" id="hdnScrollTop" runat="server" value="0" />

2:使用窗口顶部的值(this.scrollTop)更新隐藏的字段。这是通过onscroll属性完成的。由于overflow: auto;,此div将滚动。还要注意名称“ MainContent_hdnScrollTop”。 在<aps:Content>标签(未显示)上,我有ContentPlaceHolderID="MainContent" 因此您可能需要相应地更改名称。检查在渲染页面上生成的名称。

     <div id="divScroll" style="vertical-align: top; height: 550px; overflow: auto; width: 950px;"
        onscroll="$get('MainContent_hdnScrollTop').value = this.scrollTop;">

3:您可能必须添加scriptmanager控件。您唯一允许的一个。我已经有了一个MasterPage。

 <asp:ScriptManager ID="scriptManager" runat="server" EnablePartialRendering="True" />

4:将divScroll的顶部设置为隐藏字段的JavaScript。

<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_pageLoaded(pageLoaded);

    function pageLoaded(sender, args)
    {
        try {
            $get("divScroll").scrollTop = $get("MainContent_hdnScrollTop").value;
        }
        catch(err) { return;}
    }
</script>
相关问题