UPDATE ( SELECT t1.value, t2.CODE
FROM table1 t1
INNER JOIN table2 t2 ON t1.Value = t2.DESC
WHERE t1.UPDATETYPE='blah')
SET t1.Value= t2.CODE
Вы сталкиваетесь с этой проблемой, потому что UpdatePanel
полностью замены Ваш прокрученный <select>
элемент с новым, когда асинхронный запрос возвращается.
Возможные решения:
Использование JavaScript для хранения scrollTop
свойство <select>
элемент в скрытом элементе формы перед эти UpdatePanel
отправлен (путем вызова ClientScriptManager.RegisterOnSubmitStatement
метод) и затем установки его на новом <select>
, когда вызов Ajax возвращается. Это будет утомительно, подвержено ошибкам, и вероятно не очень совместимо (см. здесь ).
Использование JavaScript для хранения <select>
selectedIndex
свойство и повторный выбор, что объект, когда вызов Ajax возвращается. Очевидно, это не будет работать, если пользователь ничего еще не выбрал.
не используют UpdatePanel
s. Попробуйте jQuery + методы страницы ASP.NET вместо этого.
Кажется, что следующий пример кода прокручивает следующим образом:
Internet Explorer 8: После обратной передачи выбранный пункт является первым видимым объектом.
Firefox: После обратной передачи выбранный пункт всегда видим (но мог бы быть последний видимый объект).
Chrome: После обратной передачи мог бы быть скрыт выбранный пункт, так как поле списка прокручивает к вершине, как Вы говорите.
<asp:UpdatePanel ID="up1" runat="server"> <ContentTemplate> <asp:ListBox ID="lb1" runat="server" Height="100px" AutoPostBack="true"> <asp:ListItem>A</asp:ListItem> <asp:ListItem>B</asp:ListItem> <asp:ListItem>C</asp:ListItem> <asp:ListItem>D</asp:ListItem> <asp:ListItem>E</asp:ListItem> <asp:ListItem>F</asp:ListItem> <asp:ListItem>G</asp:ListItem> <asp:ListItem>H</asp:ListItem> </asp:ListBox> </ContentTemplate> </asp:UpdatePanel>