ツリービューを含むユーザーコントロールがあります。ユーザーがノードを展開するたびに、更新パネルを使用してノードが再ロードされます。ユーザーがリロードするたびにツリービューをスクロールする必要がないように、現在のdivのscrollTop値をキャプチャしてテキストボックスに保存し、ポストバック後にその値を取得してリロードします。1つの奇妙な動作を除いてすべてが機能します。これはdivです:
<div ID="treePanel" runat="server" class="treePanel" onscroll="setScroll(this.scrollTop)" onunload="testScroll()" >
<asp:TextBox ID="scrollTb" runat="server" Text="" ></asp:TextBox>
<asp:TreeView ID="TreeView1" runat="server"
OnTreeNodeExpanded="Node_Expand" CollapseImageToolTip="Click To Collapse" ExpandImageToolTip="Click To Expand">
</asp:TreeView>
</div>
これは、マスターページにあるjavascript関数です。
function setScroll(getVal){
var getTb = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_scrollTb")
getTb.value= getVal
}
function testScroll(){
var getTb = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_scrollTb")
var getDiv = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_treePanel")
getDiv.scrollTop= getTb.value
}
問題は、次のようにJavaScriptに「Alert()」を追加しない限り、これが機能しないことです。
function testScroll(){
var getTb = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_scrollTb")
var getDiv = document.getElementById("ctl00_ContentPlaceHolder1_rmsStepThree1_treePanel")
alert('some text')
getDiv.scrollTop= getTb.value
}
なぜこれがこのように動作しているのか、そしてそれを修正する方法を誰かが説明できますか?私は明らかにそこに警告を出すことができません。
ありがとうジェイソン