Как установить вертикальную полосу прокрутки в теге div с помощью таймера asp.net при обновлении страницы - PullRequest
2 голосов
/ 29 марта 2012

Я разрабатываю приложение чата с использованием asp.net, в этом приложении с помощью тега div с тегом div добавьте окно сообщения asp.net Literal и один элемент управления таймером, теперь моя проблема заключается в том, когда страницаобновит или нажмет кнопку (в любое время) полоса прокрутки div всегда вверху, но я бы хотел, чтобы она оставалась внизу, как настроить мой код?

<div id="divMessages" style="background-color: White; border-color:Black;border-width:1px;border-style:solid;height:300px;width:592px;overflow-y:scroll; font-size: 11px; padding: 4px 4px 4px 4px;" onresize="SetScrollPosition()">
  <asp:Literal Id="litMessages" runat="server" />
</div>
<asp:TextBox Id="txtMessage" onkeyup="ReplaceChars()" onfocus="SetToEnd(this)" runat="server" MaxLength="100" Width="500px" ClientIDMode="Static" />
<asp:Button Id="btnSend" runat="server" Text="Send" OnClientClick="SetScrollPosition()" OnClick="BtnSend_Click" ClientIDMode="Static"/>

и функция javascript равна

function SetScrollPosition()
{
  var div = document.getElementById('divMessages');            
  div.scrollIntoView(false);
  //(or) 
  div.scrollTop = 10000;
  //(both are checking)
}

, пожалуйста, дайте мне какие-либо предложения о том, что

Я проверил этот пример он работает без панели обновлений, но у меня также есть панель обновления и контроль таймера,Мне нужно использовать эти элементы управления для поддержания полосы прокрутки в нижней части, пожалуйста, дайте мне какие-либо предложения ................

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

Проверьте этот код См. Этот пример

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"
            ScriptMode="Release" />
        <script type="text/javascript">
            var xPos, yPos;
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            function BeginRequestHandler(sender, args) {
                if ($get('<%=divMessages.ClientID%>') != null) {
                    xPos = $get('<%=divMessages.ClientID%>').scrollLeft;
                    yPos = $get('<%=divMessages.ClientID%>').scrollTop;
                }
            }
            function EndRequestHandler(sender, args) {
                if ($get('<%=divMessages.ClientID%>') != null) {
                    xPos = $get('<%=divMessages.ClientID%>').scrollLeft = xPos;
                    yPos = $get('<%=divMessages.ClientID%>').scrollTop = yPos;
                }
            }
            prm.add_beginRequest(BeginRequestHandler);
            prm.add_endRequest(EndRequestHandler);
        </script>
0 голосов
/ 29 марта 2012

У меня может быть простое решение, но я не уверен, хотите ли вы.

Традиционно, мы можем установить привязку для URL и позволить странице прокручиваться в специальном месте при доступе к этой странице.

Итак, вы можете написать немного js для управления этим якорем.

<div id="divMessages" onresize="SetScrollPosition()">
    <asp:Literal Id="litMessages" runat="server" />
</div>
<div id="msg-local" />//add new element is to auto scroll to here.

function SetScrollPosition()
{
     ......
     //set the url with anchor
     window.location.hash = "go-msg-local"; 
     //set this value can disable browser auto scroll
 }

// затем событие загрузки страницы

 function page_load {
    if (window.location.hash) {
      window.location.hash = "msg-local"; 
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...