日期:2014-05-20  浏览次数:20412 次

用 div 时,展开里面的 treeview ,当 treeview 稍长一点的时候,最下面的节点就展不开......

我的问题跟这个贴子描述的现象一模一样:
http://community.csdn.net/Expert/topic/5136/5136908.xml?temp=.7752497

但是楼主自行解决了,也没说是如何解决的。

他的描述是这样的:

------------------------

treeview   里的数据比较多,用 <div> 控制出现下拉滚动条,进入后第一项是默认的选中项,展开三级,拉滚动条至下端后,点最下面的+展开,但是又跳到最上面去了,请问怎么能够点下面的+是展开,而不是跳到上面?AUTOPOST未FALSE

-------------------------

我再把现角补充一下:展开二级后,treeview   稍长一点了   div   开始出现滚动条了,这时,如果点击第三个节点,这时,整个treeview     又跳到最上面,同时,这个节点也没有被展开




------解决方案--------------------
给你个保存DIV位置的解决方案:
string[] divID= "div1 ", "div2};

protected void Page_Load(object sender, System.EventArgs e)
{
RetainScrollPosition(divID);
}

//// <summary>
/// 功能:在页面post时保存屏幕滚动状态;
/// 直接在Page_Load中加入Zeda.CNE.Common.RetainScrollPosition();
/// 不能加在if(!Page.IsPostBack){}内;
/// 加入的两个隐藏域为__SCROLLPOS_TOP和__SCROLLPOS_LEFT
/// </summary>
public static void RetainScrollPosition()
{
System.Web.UI.Page page=(Page)HttpContext.Current.Handler;
page.RegisterHiddenField( "__SCROLLPOS_TOP ", "0 ");
page.RegisterHiddenField( "__SCROLLPOS_LEFT ", "0 ");

string saveScrollPosition = " <script language= 'javascript '> function saveScrollPosition() {{document.forms[0].__SCROLLPOS_TOP.value = {0}.scrollTop;document.forms[0].__SCROLLPOS_LEFT.value = {0}.scrollLeft ;}}{0}.onscroll=saveScrollPosition; </script> ";
string setScrollPosition = " <script language= 'javascript '> function setScrollPosition() {{{0}.scrollTop = '{1} ';{0}.scrollLeft = '{2} ' }}{0}.onload=setScrollPosition; </script> ";

page.RegisterStartupScript( "saveScroll ", string.Format(saveScrollPosition, "window.document.body "));

if (page.IsPostBack)
{
page.RegisterStartupScript( "setScroll ", string.Format(setScrollPosition, "window.document.body ", page.Request.Form[ "__SCROLLPOS_TOP "],page.Request.Form[ "__SCROLLPOS_LEFT "]));
}
}


------解决方案--------------------
这个问题我重现不了.

确认一下,点完+后有没有提交?