【问题标题】:How to scroll to selected in a DataGrid?如何滚动到 DataGrid 中的选定项?
【发布时间】:2012-12-23 16:09:53
【问题描述】:

我正在显示这样的 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 似乎对代码隐藏不可用。

【问题讨论】:

  • 如果您使用的是 .NET 4.0,您可以尝试设置 gridview 的 EnablePersistedSelection="true"
  • @deni,感谢您的建议:我使用的是 .Net 4.0,但如果我将它放在 DataGrid 或 div 中,它就不起作用。
  • 将数据网格放在更新面板中
  • 我找到了一个解决方案here,一旦我注意到需要滚动的是div 而不是DataGrid

标签: asp.net datagrid


【解决方案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>

【讨论】:

  • 感谢您的回答,但 Microsoft JScript runtime error: object expected 失败
  • 你能指定它在哪一行失败吗?
  • 据我所知,$(document).ready(function (){ 是问题所在。
  • 您是否在 部分中添加了对 jQuery 库的引用?
  • 不,我没有。那大概就是这个原因。我暂时无法尝试。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多