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
}

VisualStudio2008とIE9を使用しています。ユーザーはIE8またはIE9のいずれかを使用します。

どんな助けでも大歓迎です!

4

2 に答える 2

0

何時間も壁に頭をぶつけた後、私はついにそれを理解しました。

上記のコードは正しく、完全に機能します。問題は、divDataGridが別のdiv内に含まれていて、そのdivにoverflow:autoが設定されていることでした。したがって、私が見たスクロールバーは、divDataGridやgrdItemではなく、そのdivからのものでした。

前のdivからoverflow:auto設定を削除すると、すべてが機能し始めました。

于 2013-02-26T14:55:43.867 に答える
0

UpdatePanel でデータグリッドをラップできますか?

于 2013-02-21T16:21:53.143 に答える