【问题标题】:how to scroll asp.net textbox to bottom如何将asp.net文本框滚动到底部
【发布时间】:2010-11-26 03:57:36
【问题描述】:

我正在构建一个带有包含日志消息的文本框的网站。使用 AJAX 更新日志。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" >
    <ContentTemplate>
        <asp:TextBox ID="TextBox1" runat="server"                                 
            onload="textbox_load"
            Height="110px" 
            TextMode="MultiLine"             
            Width="100%">
        </asp:TextBox>    
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
    </Triggers>
</asp:UpdatePanel>

每次更新时我都需要向下滚动文本框。怎么样?

【问题讨论】:

    标签: asp.net ajax textbox scroll


    【解决方案1】:

    处理Sys.WebForms.PageRequestManager.endRequest 事件并向下滚动文本框:

    var tbox = $get('<%= TextBox1.ClientID %>');
    tbox.tbox.scrollTop = tbox.scrollHeight;
    

    【讨论】:

    • .scrollDown() 似乎没有定义!我收到一个 javascript 异常
    • 我正在尝试这个,但到目前为止,上面的脚本应该去哪里?我将它放在我的 html 标签之外,在我的文本框旁边,但都不起作用,每次刷新后滚动条都保留在文本框的顶部!
    • 为我工作。为了测试,我没有创建变量,但我使用此代码从母版页滚动内容页中的 TextBox 控件。这是我的工作,粗略的实现:var prm = Sys.WebForms.PageRequestManager.getInstance(); function EndRequestHandler() {if ($get('&lt;%= (TextBox)StatusWindow.FindControl("StatusTxtBox")).ClientID %&gt;') != null) {$get('&lt;%= ((TextBox)StatusWindow.FindControl("StatusTxtBox")).ClientID %&gt;').scrollTop = $get('&lt;%= ((TextBox)StatusWindow.FindControl("StatusTxtBox")).ClientID %&gt;').scrollHeight;}} prm.add_endRequest(EndRequestHandler);
    【解决方案2】:

    为什么不试试这个简单的例子:

    protected void Page_Load(object sender, EventArgs e) { 如果(!IsPostBack) {

                Page.ClientScript.RegisterStartupScript(this.GetType(),
                "ScrollTextbox",
                "<script type=\"text/javascript\">document.getElementById('" +
                this.TextBox1.ClientID +
                "').scrollTop = document.getElementById('" +
                this.TextBox1.ClientID +
                "').scrollHeight; " +
                " </script>");
            }
        }
    

    只需将 TextBox1 参数更改为您的文本框名称即可。可以看到文本框中的内容滚动到了底部。

    您可以在 AJAX 刷新文本框内容后调用此 java 脚本。

    【讨论】:

      【解决方案3】:

      尝试一些简单的 javascript。这是我认为您可以修改以在您的场景中工作的示例:

      <html xmlns="http://www.w3.org/1999/xhtml">
      <head runat="server">
        <title></title>
      
        <script type="text/javascript">
          function scrollDown() 
          {
            document.getElementById('<%=TextBox1.ClientID%>').scrollTop = document.getElementById('<%=TextBox1.ClientID%>').scrollHeight;
          };
        </script>
      
      </head>
      <body>
        <form id="form1" runat="server">
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </form>
      </body>
      </html>
      

      你只需要弄清楚如何调用 scrollDown 方法...

      【讨论】:

      • 这可能对textarea HTML控件有好处,但是如何在asp:TextBox服务器控件中添加javascript函数呢?
      猜你喜欢
      • 2010-12-31
      • 2017-02-07
      • 1970-01-01
      • 2012-03-01
      • 2010-10-28
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      相关资源
      最近更新 更多