我有一个带有固定标题和10行的GridView,可以由用户更新新行。 在GridView中,我只显示3行和垂直滚动条。
用户选择GridView上的任何行(发生回发)后,我想将其滚动到所选行。
我该怎么做?
提前致谢。
答案 0 :(得分:1)
如果您使用winform
,则需要设置
dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.SelectedRows[0].Index;
答案 1 :(得分:0)
这是我想出的解决方案。它绝对不是完美的,因为我只是JavaScript的新手。欢迎进行所有修改。
首先...要注意
“出现在命名容器中的任何服务器控件都具有 其呈现的ID值以命名容器的ID为前缀 控制。”
简而言之...您有一个隐藏字段可保存滚动框顶部的值...并在页面加载时将其设置回该值。所有代码都使用JavaScript。
1:创建隐藏字段。
<input type="hidden" id="hdnScrollTop" runat="server" value="0" />
2:使用窗口顶部的值(this.scrollTop)更新隐藏的字段。这是通过onscroll属性完成的。由于overflow: auto;
,此div将滚动。还要注意名称“ MainContent_hdnScrollTop”。
在<aps:Content>
标签(未显示)上,我有ContentPlaceHolderID="MainContent"
因此您可能需要相应地更改名称。检查在渲染页面上生成的名称。
<div id="divScroll" style="vertical-align: top; height: 550px; overflow: auto; width: 950px;"
onscroll="$get('MainContent_hdnScrollTop').value = this.scrollTop;">
3:您可能必须添加scriptmanager控件。您唯一允许的一个。我已经有了一个MasterPage。
<asp:ScriptManager ID="scriptManager" runat="server" EnablePartialRendering="True" />
4:将divScroll的顶部设置为隐藏字段的JavaScript。
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);
function pageLoaded(sender, args)
{
try {
$get("divScroll").scrollTop = $get("MainContent_hdnScrollTop").value;
}
catch(err) { return;}
}
</script>