在updatepanel中滚动div

时间:2009-08-15 13:18:17

标签: c# asp.net javascript ajax asp.net-ajax

我需要在新文本进入时向上滚动div。我的div在Updatepanel中,我收到此错误“get(”divChatMessage“)为null” 这是我的代码: -

<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>

代码背后: -

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

1 个答案:

答案 0 :(得分:1)

您遇到了命名容器的问题。由于您的控件设置为runat = server,因此它的名称将在客户端损坏。从后面的代码中提供div的ClientID作为脚本的参数,这将解决您的问题。

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

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