我有一个RadGrid,它为网格的每一行都有一个WebUserControl,允许用户编辑该行。当我单击编辑按钮以展开行时(这会在该行的网格中打开一个.ascx控件),它总是滚动到页面顶部。然后,用户必须向下滚动以找到他们选择的行,并展开该行以开始编辑该行。
我在另一篇文章中发现,在数据绑定网格之前添加RadGrid1.ClientSettings.AllowKeyboardNavigation = true;
有助于保持滚动位置。这种工作,您只需向下滚动鼠标滚轮一下,找到要编辑的行;不够好。
我也在aspx页面上设置了MaintainScrollPositionOnPostback=“true"
。
我还在客户端设置SaveScrollPosition=“true"
下设置了RadGrid本身。
我希望看到的是当用户点击给定行的编辑时页面根本不移动。我想保持页面上的滚动位置。
这可以实现吗?如果是这样,怎么样?
答案 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中存在消息时,网格将仅滚动到顶部。