我用VS2005做了个web版的聊天室,aspx页面上用ScriptManager 和 UpdatePanel 进行局部刷新,在 UpdatePanel 里面有个textbox,用来存储和更新聊天信息,TextMode="MultiLine",这样数据多到一定程度的时候就会出现滚动条,每当UpdatePanel 由timer 触发刷新的时候,滚动条就又跑到最上面去了,最新添加的信息就需要拖拽滚动条才能看见,能否实现刷新后,滚动条停留在刷新前的位置?
网上搜了半天,很多人说用 textbox.scrollTop =textbox.scrollHeight; 但是一直没有实现,在后台代码中scrollTop等属性貌似都不存在,那个高手帮忙指点一下,谢谢
网上搜了半天,很多人说用 textbox.scrollTop =textbox.scrollHeight; 但是一直没有实现,在后台代码中scrollTop等属性貌似都不存在,那个高手帮忙指点一下,谢谢
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "document.getElementById('TextBox1').scrollTop = document.getElementById('TextBox1').scrollHeight;", true);
TextBox1是id
page的Page_Load 和timer的 Timer1_Tick两个事件都在里面添加了,但是效果没有达到啊,好像是拉下来了一下,但是马上就上去了,只是那么一闪... 难道刷新就不行??
<script language="javascript" type="text/javascript">
{
function scroll(textbox)
{
textbox.scrollTop =textbox.scrollHeight;
}
}
</script>
我把這一段代碼放在body里,然後在body 标签属性里添加 onload="scroll(TextBox1)",这样对吗?怎么效果不行呢
ScriptManager.RegisterStartupScript(UpdatePanel1,UpdatePanel1.GetType(),"document.getElementById('TextBox1').scrollTop = document.getElementById('TextBox1').scrollHeight;", true);
<frame src="display.aspx" />
<frame src="send.aspx" />
</frameset>
display.aspx页面负责显示聊天内容,send.aspx负责输入聊天内容
send.aspx页面上有个按钮的事件如下:
string talk = TextBox2.Text;
string message = Session["username"].ToString() + "說 :" + talk + "\n";
Application.Lock();
Application["message"] = Application["message"].ToString() + message;
Application.UnLock();
TextBox2.Text = "";
TextBox2.Focus();
然后display.aspx的page_load事件里写如下:
TextBox1.Text = Application["message"].ToString();
为了实现定时的局部刷新,我把display.aspx页面上的TextBox1放在一个UpdatePanel里面,用timer控件去控制,timer的事件如下:
this.UpdatePanel1.Update();
错误 1 “RegisterStartupScript”方法没有采用“4”个参数的重载