2012-01-11 36 views
1

我使用AJAX Timer在ASP.NET C#中创建了一个聊天应用程序,由于定期更新updatepanel,我无法控制滚动条并且无法选择文本。现在,我想要什么是将从数据库接收的数据附加到DIV的替代方法。如何将C#与AJAX或jQuery或JavaScript一起使用如何将检索到的文本附加到DIV?C#将数据附加到聊天脚本中的DIV

部分的我的代码

while(dr.read()) 
{ 
    string chatvalues = dr[0].ToString(); 
    // How to append this chatvalues a DIV 
} 

回答

4

如果你只是想简单的文本,并假设您的div有divChat的ID和设置为RUNAT =“服务器”,你可以这样做:

var sbChatData = new System.Text.StringBuilder(1000); 
while(dr.read()) 
{ 
    sbChatData.AppendLine(dr[0].ToString()); 
} 
divChat.InnerText += sbChatData.ToString(); 

更新

到回发或使用更新面板的替代方法是使用Ajax请求或静态页面方法来检索您想要在div中使用的值。

下面是使用页面方法一个简单的例子:

1)如果你没有它已经,添加脚本经理到您的网页:

<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" EnablePartialRendering="true" runat="server" /> 

2)添加一个静态方法来你的网页中抓取的聊天内容:

[System.Web.Services.WebMethod] 
    public static string GetChatData() 
    { 
     // Some additional code; you will probably also need to pass a paramter for the chat id 
     var sbChatData = new System.Text.StringBuilder(1000); 
     while (dr.read()) 
     { 
      sbChatData.AppendLine(dr[0].ToString()); 
     } 
     return sbChatData.ToString(); 
    } 

3)添加JavaScript来获取聊天数据,并更新DIV:

<script language="javascript" type="text/javascript"> 
    function UpdateChatData() { 
     var sChatData = PageMethods.GetChatData(); 
     if (sChatData != null) { 
      document.getElementById('divChat').innerText = sChatData; 
     } 
    } 
</script> 
+0

这是继续追加完整值与旧值。 – 2012-01-11 19:05:37

+0

@Madcoder。如果您每次都从数据库中读取所有值,则可以将'divChat.InnerText + ='更改为'divChat.InnerText =' – 2012-01-11 19:12:45

+0

但是,如果我在Timer_Tick中编写此代码,那么我也遇到了相同的问题。如果我在Page_Load中写入相同的内容,我必须重新加载每次更新值。 – 2012-01-11 19:36:12