如何将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('<%= (TextBox)StatusWindow.FindControl("StatusTxtBox")).ClientID %>') != null) $get('<%= ((TextBox)StatusWindow.FindControl("StatusTxtBox")).ClientID %>').scrollTop = $get('<%= ((TextBox)StatusWindow.FindControl("StatusTxtBox")).ClientID %>').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文本框滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章