none
asp.net web应用程序中textbox控件的滚动条控制问题。。。纠结很久了 RRS feed

  • 问题

  • 我现在正在写一个简单的基于web的聊天室,想把用户说的话输入到textbox上,可是随着内容增加滚动条的位置始终在最上边,看不到最新的对话内容,有没有什么办法使textbox的滚动条始终在最下边?希望专家们能在百忙之余帮我解决这个问题,谢谢你们了。

    2010年4月20日 13:19

答案

全部回复

  • 呵呵,我也正等待答案~~~
    2010年4月20日 23:05
  • js实现:

    document.getElementById("textboxClientID属性").scrollTop = document.getElementById("textboxClientID属性").scrollHeight


    【孟子E章】
    2010年4月21日 1:20
    版主
  • 我写了一个简单的函数

    <script type="text/javascript">
        function flesh() {
            var b = document.getElementById("TextBox1");
            b.scollTop = b.scrollHeight;
        }
    </script>

    我在哪里调用这个函数呢?我使用了ajax控件一直刷新TextBox1中的内容。

    2010年4月22日 8:33
  • 你在设置这个textbox的值的时候顺便使用那个设置滚动条的位置就行了。
    Microsoft Online Community Support
    2010年4月22日 8:57
  • onload="flesh()"加在任何asp.net控件里好像都不对啊。。。我使用Timer来设置TextBox1的值

      protected void Timer1_Tick1(object sender, EventArgs e)
            {
                         
                TextBox1.Text = Application["talk"].ToString();    

            }

    您的意思是在这里使用?

    <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick1" onload="flesh()">
        </asp:Timer>

    2010年4月22日 11:44
  • 你好,

    如果你用服务器端的ajax中的timer控件恐怕不好调整textbox的scrollbar的高度.如果你想设置或者获取application,建议通过前端脚本调用webservice这样的方式来实现。

    下面是个纯前台脚本方面的例子,至于调用后台webservice方面的你可以在网上找找,应该很多。

    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
     
      protected void Page_Load(object sender, EventArgs e)
      {
        
      }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      
      <asp:TextBox ID="TextBox1" runat="server" Height="218px" Text="fafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaf"
        TextMode="MultiLine" Width="403px"></asp:TextBox>
      </form>
    
      <script type="text/javascript" language="javascript">
        window.setInterval(changeValue, 1000);
        function setTextBoxValue() {
        PageMethods.
        }
        function changeValue() {
          var tb = document.getElementById('<%=TextBox1.ClientID %>');
          var val = tb.value;
          tb.value = val + "\n" + "fafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfafafaffafadfdafafasdfaf";
          tb.scrollTop = tb.scrollHeight;
    
        }
      </script>
    
    </body>
    </html>
    

    Microsoft Online Community Support
    2010年4月23日 2:05
  • 谢谢版主们的帮助,我还得潜心多学学javascript相关的知识。

    2010年4月23日 4:18