更新TextBox内部文本而不刷新页面

时间:2015-06-18 02:42:12

标签: c# asp.net

我正在与一些朋友一起开发一个平台作为大学学科的项目。我们正在尝试使用ASP.NET创建IRC,但我们现在正面临一个问题。

我们有这个文本框:

<asp:TextBox ID="txtLog" runat="server" TextMode="MultiLine" AutoPostBack="True"></asp:TextBox>

然后我们在代码后面有一个函数,它检查你是否仍然连接到我们的服务器,如果你正在读取来自他的流并将其附加到TextBox。

txtLog.Text += string.Format(strReceptor.ReadLine() + "\r\n");

问题是,此TextBox的属性Text已更新,但在页面中不显示。如何在不刷新页面的情况下更新网页上TextBox内的Text?我们不想刷新页面,因为如果我们这样做,我们就会失去与服务器的连接。

我们知道我们可以使用JavaScript来更新它,但我们并不成功。我们尝试了一个函数,但只调用了一次。

在一个新线程上运行的循环内更新Text属性的函数,以便它不断检查服务器是否有东西,以及它是否将它附加到TextBox。 / p>

提前致谢!

2 个答案:

答案 0 :(得分:1)

也许你可以用ajax尝试这个:

var addedStr = '';
var oldValue = $('#' + <%=txtLog.ClientID%>).val();
$('#' + <%=txtLog.ClientID%>).val(oldValue + addedStr);

答案 1 :(得分:1)

我将在此处发布我们已经遵循的解决方案,以帮助稍后可能会抓住此帖并且目前面临与我们相同的问题的人。

ASPX页面代码:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Timer ID="UpdateTimer" runat="server" Interval="1000" OnTick="UpdateTimer_Tick" Enabled="True"></asp:Timer>

<asp:UpdatePanel ID="TimedPanel" runat="server" UpdateMode="Conditional">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="UpdateTimer" EventName="Tick" />
</Triggers>
<ContentTemplate>
    // Content to be updated each 1000ms
</ContentTemplate>

Timer的相关属性:

  • Interval:表示此内容的以毫秒为单位的时间 更新
  • OnTick:将在每个代码后面执行代码的方法 一毫秒

代码背后:

protected void UpdateTimer_Tick(object sender, EventArgs e)
{
    // Code to be executed with the timer is triggered
}

这很简单。有任何问题,请回答我可以尝试解决它! 祝你好运!