2009-08-15 11 views
1

Ich muss das div nach oben scrollen, wie der neue Text kommt. Mein div ist in Updatepanel und ich bekomme diesen Fehler "get (" divChatMessage ") ist null" Hier ist mein Code: -Scrollte das div in 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 hinter: -

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

Antwort

1

Sie laufen in Probleme mit dem Namenscontainer. Da Ihr Steuerelement auf "runat = server" gesetzt ist, wird der Name auf der Clientseite verändert. Stellen Sie die ClientID des div als Parameter für das Skript aus dem Code hinter und das wird Ihr Problem lösen.

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

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

ich schätze wirklich Ihre Hilfe. – Jango