0

我有一个包含数据网格的 aspx 页面。此数据网格通过 SQL 查询填充到代码隐藏中,并且可以包含 1 到 1000 行。

用户可以单击每一行并编辑该行的数据。然而,一旦他们保存,无论他们在哪里,数据网格都会滚动回顶部。我想保持数据网格中的滚动位置,以便用户可以轻松地编辑下一行。我的 aspx 页面上有以下内容:

<script src="common.js" type="text/javascript"></script>

    <script type = "text/javascript">

        function setScroll(val) {
            document.getElementById("hidscrollPos").value = val.scrollTop;
        }

        function scrollTo(what) {
            document.getElementById(what).scrollTop =
        document.getElementById("hidscrollPos").value;
        }
</script>

<body MS_POSITIONING="GridLayout" onload="javascript:scrollTo('divDataGrid')">
<form id="form1" method="post" runat="server">
<asp:Panel ID="Panel4" style="left: 0px; position: absolute; top: 354px" runat="server">
<div id="divDataGrid" style="overflow:scroll;" onscroll="javascript:setScroll(this);">
    <asp:DataGrid ID="grdItem" runat="server" AllowSorting="True"
        AutoGenerateColumns="False" style="position: absolute; top: 50px" 
        CssClass="grdGrid" Font-Size="X-Small" GridLines="None" Width="97%" 
        Height="4px" CellPadding="1">


</asp:DataGrid>
</div>
</asp:Panel>
<input type="hidden" id="hidscrollPos" name="scrollPos" value="0" runat="server" />
</form>
</body>

在数据网格中,我定义了 11 个我认为(希望?)与此问题无关的 asp:TemplateColumns。如果需要,我当然可以添加该代码。

我的 .css 文件包含 grdGrid:

.grdGrid
{
FONT-SIZE: 12px;
FONT-FAMILY: Verdana;
BACKGROUND-COLOR: white
}

我正在使用 Visual Studio 2008 和 IE9。用户将使用 IE8 或 IE9。

任何帮助将非常感激!

4

2 回答 2

0

您可以将数据网格包装在 UpdatePanel 中吗?

于 2013-02-21T16:21:53.143 回答
0

在把我的头撞在墙上几个小时之后,我终于弄明白了。

上面发布的代码是正确的并且可以完美运行。问题是 divDataGrid 包含在另一个 div 中,并且该 div 具有溢出:自动设置。所以我看到的滚动条来自那个 div,而不是 divDataGrid 或 grdItem。

一旦我从前一个 div 中删除了 overflow:auto 设置,一切都开始工作了。

于 2013-02-26T14:55:43.867 回答