Похоже, ваша проблема похожа на ту, что была у меня недавно.Я склонен сказать, что PostBack - это ваша проблема, и вам придется обрабатывать позицию прокрутки с помощью JavaScript.Мое решение было следующим:
Создайте HiddenField на странице ASPX для хранения текущей позиции ScrollBar.
<code>
< asp : HiddenField ID ="hdnScollTop" EnableViewState =true runat="server" /></p>
<p>
Создание функций JavaScript в теге для сохранения и загрузки значения из HiddenField, которое вы получаете и устанавливаете с помощью позиции прокрутки.У меня также была функция Updatelist (), которую я должен был использовать для моего множественного выбора ListBox.
<code></p>
function Updatelist() {
//details removed
}
function GetListBoxScrollPosition(){
var sel = document.getElementById('<%=lstbxStuff.ClientID%>');
var hdnScrollTop = document.getElementById('<%=hdnScollTop.ClientID %>');
hdnScrollTop.innerText=sel.scrollTop;
}
function SetListBoxScrollPosition(){
var sel = document.getElementById('<%=lstbxStuff.ClientID%>');
var hdnScrollTop = document.getElementById('<%=hdnScollTop.ClientID %>');
sel.scrollTop=hdnScrollTop.value; //not sure why it's in value when I clearly put it in innerText. This is what works.
}
<p>
В Form_Load зарегистрируйте функции JavaScript и инициализируйте HiddenFieldЗначение.В Page_Load кода позади я установил все скрипты.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindACLs();
//I use the hidden field to set the lstbxStuff
//scroll bar, which will scroll to the top anyway.
//This is to avoid a JavaScript error.
hdnScollTop.Value = "0";
}
else
{
lstbxStuff.Focus();
}
lstbxACLs.Attributes.Add("onclick", "GetListBoxScrollPosition();Updatelist();");
lstbxACLs.Attributes.Add("onfocus", "SetListBoxScrollPosition();");
}