2009-08-15 5 views
1

Je dois faire défiler la div comme le nouveau texte entre. Mon div est dans Updatepanel et j'obtiens cette erreur "get (" divChatMessage ") est null" Voici mon code: -Scrollup the div dans updatepanel

<script type="text/javascript"> 
function ScrollToBottom() 
{ 
     $get('divChatMessage').scrollTop = $get('divChatMessage').scrollHeight; 
} 
</script> 
<div id="divMessage" runat="server" style="float: left"> 
      <asp:UpdatePanel ID="upMessage" runat="server"> 
       <ContentTemplate> 
       <div id="divChatMessage" style="width:600px; overflow:auto; height:200px; border-style:solid;" runat="server"> 
       </div> 
</ContentTemplate> 
      </asp:UpdatePanel> 
     </div> 
Code

derrière: -

divChatMessage.InnerHtml = divChatMessage.InnerHtml + "<br />" + message; 
ScriptManager.RegisterStartupScript(this, 
            this.GetType(), 
            Guid.NewGuid().ToString(), 
            ";ScrollToBottom();", 
            true); 

Répondre

1

Vous êtes en cours d'exécution dans des problèmes avec le conteneur de dénomination. Puisque votre contrôle est défini sur runat = server, son nom sera tronqué du côté client. Fournir le ClientID de la div comme un paramètre du script à partir du code derrière et cela va résoudre votre problème.

ScriptManager.RegisterStartupScript(this, 
            this.GetType(), 
            Guid.NewGuid().ToString(), 
            ";ScrollToBottom('" 
             + divChatMessage.ClientID 
             + "');", 
            true); 

function ScrollToBottom(id) 
{ 
    var ctl = $get(id); 
    ctl.scrollTop = ctl.scrollHeight; 
} 
+0

J'apprécie vraiment votre aide. – Jango