如何将asp.net文本框滚动到底部

Posted

技术标签:

【中文标题】如何将asp.net文本框滚动到底部【英文标题】:how to scroll asp.net textbox to bottom 【发布时间】: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>

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

【问题讨论】:

【参考方案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函数呢?

以上是关于如何将asp.net文本框滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章

自动滚动文本框到底部

当新数据写入富文本框时,它会滚动到底部

如何将 RichTextBox 滚动到底部?

追加文本时如何防止文本框自动滚动?

JS/JAVASCRIPT 选中文本框内的文字 让滚动条滚动到选中文字的位置

asp.net如何给密码文本框加上小眼睛