1

我正在显示这样的 Datagrid 并邀请用户进行选择...

<div id="gradesDiv" style="overflow: auto; width: 380px; height: 300px">
    <asp:DataGrid id="gradesGrid"
                  BorderWidth="1"
                  CellPadding="3"
                  AutoGenerateColumns="true"
                  runat="server">
        <Columns>
             <asp:ButtonColumn HeaderText="Select&nbsp;Item"
                               ButtonType="LinkButton"
                               Text="Select"
                               CommandName="Select">
             </asp:ButtonColumn>
        </Columns>
    </asp:DataGrid>
 </div>

(在代码隐藏中添加了其他三列)。但是当用户进行选择时,会执行回发并且滚动位置丢失。我希望能够重置 div 以显示所选项目。有谁知道如何做到这一点?

我试过添加

MaintainScrollPositionOnPostback="true"

到asp,但它没有帮助。我试图在代码隐藏中保持滚动位置,但 GradesDiv 似乎对代码隐藏不可用。

4

1 回答 1

1

网上有很多关于如何做到这一点的创造性方法。只需搜索 -在回发时保持 div 滚动位置。这只是其中一个示例:

<script type="text/javascript">
    $(document).ready(function () {
        var xPos, yPos;
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_beginRequest(BeginRequestHandler);
        prm.add_endRequest(EndRequestHandler);

        var divId = 'gradesDiv';

        function BeginRequestHandler(sender, args) {
            xPos = $get(divId).scrollLeft;
            yPos = $get(divId).scrollTop;
        }
        function EndRequestHandler(sender, args) {
            $get(divId).scrollLeft = xPos;
            $get(divId).scrollTop = yPos;
        }
    });
</script>
于 2013-01-09T16:10:21.913 回答