2015-06-18 150 views
2

我正在開發一個平臺,將一些朋友作爲大學主題的項目。我們正在嘗試使用ASP.NET製作一個IRC,但我們現在正面臨一個問題。更新TextBox內部文本而不刷新頁面

我們有這個文本框:

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

然後我們在後臺代碼誰檢查,如果你仍然連接到我們的服務器的功能,如果你是它讀取快到流從他並將其附加到文本框。

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

事情是,該屬性TextBox的文本被更新,但在頁面中不顯示。我們如何在不刷新頁面的情況下更新網頁上文本框內的文本?我們不想刷新頁面,因爲如果我們這樣做,我們會失去與服務器的連接。

我們知道我們可以使用JavaScript來更新它,但我們並沒有成功地做到這一點。我們嘗試了一個函數,但它只被調用一次。

更新Text屬性的函數它在一個新線程上運行的循環中,以便它始終檢查是否有東西從服務器中傳出,以及是否將它附加到文本框中。

在此先感謝!

+0

您是否在服務器端聲明瞭一個具有相同名稱的新文本框?通常它只會工作 – Sherlock

+0

不,我們沒有。 –

+0

試試AJAX電話?類似的,每分鐘檢查一次服務器(可配置),然後更新文本框。 – Chris

回答

1

也許你可以使用Ajax試試這個:

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

'addedStr'是你想要添加的字符串。 –

+0

但字符串是動態的,它會一直從流中讀取,直到有數據要讀取或連接關閉。我試圖使用它,這裏是我一直在使用的片段,但沒有發生任何事情。 https://jsfiddle.net/51bwdcxx/ –

+0

你不想刷新頁面,所以你是ajax,對不對? –

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> 

相關屬性:

  • 間隔:表示此內容將 更新
  • OnTick在milisseconds時間:對碼方法其背後將分別執行 A毫秒
背後

代碼:

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

這樣簡單。任何問題,請回答我可以嘗試解決它! 祝你好運!