在ASP.NET中的GridView上重置滚动条

时间:2009-06-16 07:05:52

标签: asp.net gridview listbox scrollbar scroll

我在页面中使用了GridViewListBox。 Gridview包含来自数据库绑定的数据DataSource。点击GridView中的项目时,列表框会显示子项目。

GridView中有滚动条时出现问题。当我从网格视图中选择最后一项时,将显示子项并且滚动条将向上。我看不出选择了哪个项目。

3 个答案:

答案 0 :(得分:0)

我建议你阅读问题Reset scroll position after Async postback - ASP.NET

的答案

答案 1 :(得分:0)

您需要在回发之前生成行ID或记录滚动位置。使用 javascript函数

yourGridId.scrollTo(x,y) 

并传递您在回发之前保存的前一个x和y位置。

将值保存在隐藏字段中,以便可以在服务器端访问它。

答案 2 :(得分:0)

<强> SOLUTION:

将隐藏字段设为

<input type="hidden" id="hdnScrollTop" runat="server" value="0" /> 

并在div添加功能

<div id="dvScroll" onscroll="$get('ctl00_ContentPlaceHolder1_hdnScrollTop').value = this.scrollTop;">

<强> JavaScript的:

var prm = Sys.WebForms.PageRequestManager.getInstance();         
prm.add_pageLoaded(pageLoaded);
prm.add_beginRequest(beginRequest);
var postbackElement;
function beginRequest(sender, args) {
   postbackElement = args.get_postBackElement();
}
function pageLoaded(sender, args)  {
   var updatedPanels = args.get_panelsUpdated();
   if (typeof (postbackElement) == "undefined") {
      return;
   }
   if (postbackElement.id.indexOf('gridViewList') > -1) {
     try {
         $get("divScroll").scrollTop = $get("ctl00_ContentPlaceHolder1__hdnScrollTop").value;
     }
     catch (Err) {
     }
}}

这解决了我的问题。