如何让textbox的滚动条一直处在最下面,并且可以上下拖动!比如有好多数据,这时textbox就会显示一个垂直滚动条,我用atlas 0.5秒刷新一次页面这时就会出现一个现象:textbox的垂直滚动条就会不停的闪烁(一值向上走)如何定位滚动条让它在最下面,并且可以随便上下拖动它,就好像QQ那样!

解决方案 »

  1.   

    #region 浏览器滚动条总在下面
    /// <summary>
    /// 浏览器滚动条总在下面
    /// </summary>
    public static void AlwaysDown()
    {
    StringBuilder winner = new  StringBuilder();
    winner.Append("<SCRIPT  LANGUAGE=\"javascript1.1\">\n");
    winner.Append("<!--\n");
    winner.Append("\tvar  autoScrollOn  =  1;var  scrollOnFunction;var  scrollOffFunction;\n");
    winner.Append("function  scrollit()\n\t\t{if(!parent.d.document.inputform.as.checked){autoScrollOn=0;return  true;}else  {autoScrollOn=1;StartUp();return  true;}}\n"); winner.Append("function  scrollWindow()\n\t\t{if  (  autoScrollOn  ==  1  ){this.scroll(0,  65000);setTimeout('scrollWindow()',50);}}");
    winner.Append("function  scrollOn()\n\t\t{autoScrollOn=1;\nscrollWindow();\n}");
    winner.Append("function  scrollOff()\n\t\t{autoScrollOn=0;}");
    winner.Append("function  StartUp()\n\t\t{this.onblur=scrollOnFunction;this.onfocus  =  scrollOffFunction;scrollWindow();}");
    winner.Append("\tscrollOnFunction = new Function('scrollOn()')\n");
    winner.Append("\tscrollOffFunction = new Function('scrollOff()')\n");
    winner.Append("\t\tStartUp();\n");
    winner.Append("\n//--></script> "); HttpContext.Current.Response.Write(winner.ToString());
    }
    #endregion
      

  2.   

    很简单的<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title></title>  <script type="text/JavaScript">
     <!--
      function scall(){
      var textBox = document.getElementById("<%=TextBox1.ClientID%>")
      textBox.scrollTop = textBox.scrollHeight
      }function Button1_onclick() {
     scall()
    }function Button2_onclick() {
    var textBox = document.getElementById("<%=TextBox1.ClientID%>")
    textBox.value += "new Value\r\n"
     scall()
    }
    window.onload=scall  //-->
      </script></head>
    <body>
      <form runat="server">
        <asp:TextBox ID="TextBox1" runat="server" Columns="50" Rows="6" TextMode="MultiLine">
        a
        b
        c
        d
        e
        f
        g
        h
        i
        j
        k
        l
        m
        n
        
        </asp:TextBox>
        <br />
        <input id="Button1" type="button" value="修改" onclick="return Button1_onclick()" />
        <input id="Button2" type="button" value="添加内容 " onclick="return Button2_onclick()" />
      </form>
    </body>
    </html>
      

  3.   

    不用怎么设置啊。拖一个TextBox进去,设置为多行,然后AppendText,这样他会自动跳到最后的。
      

  4.   

    你们都没有看清楚题目啊,atlas每隔0.5秒刷新一次,硬来是不行的!
      

  5.   

    你不应该“刷新”它,当按键(例如onKeyDown)的时候将滚动条的 scrollTop 设置为最底下,这完全是客户端行为。
      

  6.   

    如果你的atlas真的总是给你搞乱scroll位置,那么你干脆把从服务器到客户端的数据放在一个 hiddenField 上,然后由客户端脚本去判断是否有新的数据来了需要更新文本框,这样应该不会有闪烁问题。
      

  7.   

    哦,当然在onKeyDown中首先要将textarea中的输入光标定位为最后(此时似乎应该不用设置scrollTop也可以)。不过具体关于textarea的dhtml的资料可能稍微少一些,这时候手头有一本关于dhtml对象的手册就好了。
      

  8.   

    我正在想办法解决,可是我自己写的javascript和atlas会发生冲突把我写的javascript删掉可以运行,不删就返回错误atlas兼容性太差!
      

  9.   

    0.5s刷新一次,这台疯狂了吧,Atlas根本就不是给你这样用的,甚至任何B/S应用都不应该如此。如果你有频繁更新信息的需求,需要用别的方法。如果你要用Atlas,但不是简单无刷新交互,而是涉及复杂逻辑,或者对性能要求比较高,不要直接用UpdatePanel,而应该学习Atlas的客户端JavaScript框架并涉及客户端为中心的应用。据我所知,Atlas的兼容性并不会太差。不如贴部分代码上来看看吧。