
<%@ Page Language="C#" autoEventWireup="true" Codefile="Default2.aspx.cs" inherits="Default2" %><!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 runat="server"> <Title></Title><style type="text/CSS">#kdiv1{ position:relative; left:300px; top:20px; height:400px; wIDth:400px; overflow:auto;}#kdiv2{ position:relative; top:100px; left:300px;}</style> <script type="text/JavaScript"> function scrooldown(div) { var scrolldiv = document.getElementByID(div); scrolldiv.scrolltop = scrolldiv.scrollHeight; scrolldiv = null; } </script></head><body> <form ID="form1" runat="server" defaultfocus="text"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" RenderMode="Block"> <Triggers> <asp:AsyncPostBackTrigger ControlID="button1" Eventname="Click" /> </Triggers> <ContentTemplate> <div ID="kdiv1"> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <span> <%# DataBinder.Eval(Container.DataItem,"Message") %> <br /> </span> </ItemTemplate> </asp:Repeater> </div> <div ID="kdiv2"> <asp:TextBox ID="text" runat="server"/> <asp:button ID="button1" runat="server" onclick="button1_Click" OnClIEntClick="scrooldown('kdiv1')" /> </div> </ContentTemplate> </asp:UpdatePanel> </div> </form></body></HTML> C#代码
protected voID button1_Click(object sender,EventArgs e) { string MyConString = "DRIVER={MysqL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=chatserver;" + "UID=root;" + "PASSWORD=********;" + "OPTION=3"; OdbcConnection MyConnection = new OdbcConnection(MyConString); try { OdbcCommand cmd = new OdbcCommand("INSERT INTO shoutBox(name,message)VALUES(?,?)",MyConnection); cmd.Parameters.Add("@email",OdbcType.VarChar,255).Value = "something"; cmd.Parameters.Add("@email",OdbcType.Text).Value = text.Text; MyConnection.open(); cmd.ExecuteNonquery(); MyConnection.Close(); } catch { } try { MyConnection.open(); OdbcCommand cmd = new OdbcCommand("Select message from shoutBox",MyConnection); OdbcdataReader dr = cmd.ExecuteReader(); ArrayList values = new ArrayList(); while (dr.Read()) { string ep = dr[0].ToString(); values.Add(new positionData(ep)); } Repeater1.DataSource = values; Repeater1.DataBind(); text.Text = ""; UpdatePanel1.Update(); } catch { } }}解决方法 如果您在UpdatePanel周围而不是在内部移动div kdiv1,您将获得更好的结果: <div ID="kdiv1"> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" RenderMode="Block"> ... </asp:UpdatePanel></div>
当前情况的问题是div kdiv1本身将在每次部分回发后被替换,并且其所有状态(如滚动位置)将丢失.
但是,即使在此更改之后,您仍然会遇到在部分回发之后添加的行不在可见区域内的问题,因为这些新行将在最后一次调用scrollldown之后添加(‘kdiv1 “).
要解决此问题,您可以在每次发生部分回发时注册要调用的函数.您可以通过将以下JavaScript添加到页面标题来执行此 *** 作:
<script language="JavaScript"> window.onload = function() { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender,args) { scrolldown('kdiv1'); }); };</script> 注意:在我的例子中,我写了“scrolldown”而不是“scrooldown”,因为我认为这是一个错字.
总结以上是内存溢出为你收集整理的c# – 使用计时器滚动备份全部内容,希望文章能够帮你解决c# – 使用计时器滚动备份所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)