如何在每次进行回发时使文本框滚动到更新面板内的底部

时间:2015-10-14 07:30:36

标签: javascript c# asp.net

我正在尝试这样做,一个使用asp.net c#的网页上的聊天室。我使用计时器和asp.net文本框(不是输入文本框)和更新面板的技术。如果我在网页中放入任何控件,计时器将继续进行回发,因此我将计时器放入更新面板。但是,由于我想要进行实时聊天系统,每次添加新的会话行时,对话必须滚动到底部。但是,我遇到一个问题,如果我没有调用updatepanel.Update(),更新面板将不会更新,如果我调用该函数,是的,它假设得到更新,但问题是,即使我打电话

的剧本
Page.ClientScript.RegisterStartupScript(this.GetType(), "ScrollTextbox", "document.getElementById('" + this.ConversationTextBox.ClientID + "').scrollTop = document.getElementById('" +
            this.ConversationTextBox.ClientID + "').scrollHeight;", true);

脚本不起作用,因为每次面板更新时,它都会在更新面板中进行回发。这就是bug,每次更新面板进行回发时,文本框都会自动滚动到最顶层。

如果我在updatepanel.Update()之前调用javascript,一旦更新面板更新,文本框将被强制置顶,因为它是回发,

如果我在javascript之前调用updatepanel.Update(),则文本框将无法更新。

2 个答案:

答案 0 :(得分:0)

尝试使用触发器来避免UpdatePanel中的所有控件一起更新。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>

</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="YourcontrolID" EventName="YourEventName" />
</Triggers>
</asp:UpdatePanel>

希望这有帮助。 ^^

答案 1 :(得分:0)

服务器会创建一个回发,在这种情况下,你需要从客户端调用scroll to bottom方法,这样就不会创建回发,希望这个帮助