Telerik RadGrid在行选择后保持滚动位置

时间:2015-04-27 19:15:52

标签: scrollbar telerik-grid radgrid

我有一个RadGrid,它为网格的每一行都有一个WebUserControl,允许用户编辑该行。当我单击编辑按钮以展开行时(这会在该行的网格中打开一个.ascx控件),它总是滚动到页面顶部。然后,用户必须向下滚动以找到他们选择的行,并展开该行以开始编辑该行。

我在另一篇文章中发现,在数据绑定网格之前添加RadGrid1.ClientSettings.AllowKeyboardNavigation = true;有助于保持滚动位置。这种工作,您只需向下滚动鼠标滚轮一下,找到要编辑的行;不够好。

我也在aspx页面上设置了MaintainScrollPositionOnPostback=“true"

我还在客户端设置SaveScrollPosition=“true"下设置了RadGrid本身。

我希望看到的是当用户点击给定行的编辑时页面根本不移动。我想保持页面上的滚动位置。

这可以实现吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

我终于弄清楚为什么我的网格总是滚动到顶部。这都怪我。当控件传回父页面时,我希望用户看到来自WebUserControl的任何消息。 RadGrid1.ClientSettings.Scrolling.ScrollTop = 0;是问题。

我列出了以下代码:

    private void DisplayMessage()
    {
        // Display any messages from RadGrid2 that occurred in WebUserControl
        if (!string.IsNullOrEmpty(Convert.ToString(Session["LabelUpdated"])))
        {
            lblUpdated.Text = Convert.ToString(Session["LabelUpdated"]);
            Session["LabelUpdated"] = null;
        }

        RadGrid1.ClientSettings.Scrolling.ScrollTop = "0";
        lblUpdated.Focus();
    }

我已将其改为以下内容:

    private void DisplayMessage()
    {
        // Display any messages from RadGrid2 that occurren in WebUserControl
        if (!string.IsNullOrEmpty(Convert.ToString(Session["LabelUpdated"])))
        {
            lblUpdated.Text = Convert.ToString(Session["LabelUpdated"]);
            Session["LabelUpdated"] = null;
            RadGrid1.ClientSettings.Scrolling.ScrollTop = "0";
            lblUpdated.Focus();
        }
    }

更改后,当WebUserControl中存在消息时,网格将仅滚动到顶部。