gridview 实现滚动了,但是内容怎么实时更新

问题描述

按照孟子E章的例子改了下我是绑定数据到gridview,可以实现上下滚动,但是怎么实现一个滚动完成后,就显示实时更新的数据呢,例如:原数据100条滚动1到100这期间我增加或者修改了数据,在第二次循环的时候就要事实刷新出来更新的数据或者增加了数据就从1滚动到102条,不知道这个刷新怎么改呢?]-------------------------------------------------------------------------------------------后台-------------------------------------------------------------------------------------------publicpartialclass_Default:System.Web.UI.Page{publicOleDbConnectiongetConn(){stringupload_file=Server.MapPath("/data/");stringconnstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+System.Web.HttpContext.Current.Server.MapPath("~/data\th.mdb")+";PersistSecurityInfo=False";OleDbConnectionopenac=newOleDbConnection(connstr);return(openac);//openac.Open();}protectedvoidPage_Load(objectsender,EventArgse){//g.DataSource=GetData();//g.DataBind();g.DataSource=null;databing();}publicvoiddatabing(){try{stringsqlstr="select*fromfxdt";OleDbConnectionconn=getConn();conn.Open();OleDbDataAdapterda=newOleDbDataAdapter();da.SelectCommand=newOleDbCommand(sqlstr,conn);DataSetds=newDataSet();da.Fill(ds,"fxdt");g.DataSource=ds;g.DataKeyNames=newstring[]{"id"};//主键g.DataBind();conn.Close();}catch(Exceptione){throw(newException("数据库出错:"+e.Message));}}}-------------------------------------------------------------------------------------------前台-------------------------------------------------------------------------------------------<htmlxmlns="http://www.w3.org/1999/xhtml"><headid="Head1"runat="server"><metahttp-equiv="Pragma"content="no-cache"/><metahttp-equiv="Cache-Control"content="no-cache"/><metahttp-equiv="Expires"content="0"/><title></title><styletype="text/css">.blk_02{margin-top:4px;}.blk_02.table_titletable{border-left:1pxsolid#b3d3ec;border-top:1pxsolid#b3d3ec;background:#e0f0fd;color:#5198cc;}.blk_02.table_titletableth{border-right:1pxsolid#b3d3ec;border-bottom:1pxsolid#b3d3ec;height:24px;font-weight:normal;text-align:center;}.blk_02.table_data{height:1000px;overflow:auto;}.blk_02.table_datatable{border-left:1pxsolid#b3d3ec;}.blk_02.table_datatabletd{border-right:1pxsolid#b3d3ec;border-bottom:1pxsolid#b3d3ec;height:24px;font-weight:normal;text-align:center;}</style></head><body><formid="form1"runat="server"><divclass="blk_02"id="chg"><divclass="table_title"><tablewidth="885"cellspacing="0"><tbody><tr><thwidth="20%">航班号</th><thwidth="20%">始发地</th><thwidth="50px">目的地</th><thwidth="50px">计划飞</th></tr></tbody></table></div><divclass="table_data"id="demo"><divid="demo1"><asp:GridViewID="g"runat="server"AutoGenerateColumns="false"ShowHeader="false"Font-Size="12px"CellPadding="3"Width="885"><Columns><asp:TemplateFieldItemStyle-Width="20%"><ItemTemplate><%#Eval("hbh")%></ItemTemplate></asp:TemplateField><asp:TemplateFieldItemStyle-Width="20%"><ItemTemplate><%#Eval("sfd")%></ItemTemplate></asp:TemplateField><asp:TemplateFieldItemStyle-Width="50px"><ItemTemplate><%#Eval("mdd")%></ItemTemplate></asp:TemplateField><asp:TemplateFieldItemStyle-Width="50px"><ItemTemplate><%#Eval("jhf")%></ItemTemplate></asp:TemplateField></Columns></asp:GridView></div></div></div><script>varspeed=30functionMarquee(){if(document.getElementById("demo").scrollTop>=document.getElementById("demo1").offsetHeight-document.getElementById("demo").offsetHeight){document.getElementById("demo").scrollTop=0;}else{document.getElementById("demo").scrollTop++}}varMyMar=setInterval(Marquee,speed)document.getElementById("demo").onmouseover=function(){clearInterval(MyMar)}document.getElementById("demo").onmouseout=function(){MyMar=setInterval(Marquee,speed)}</script></form></body></html>

解决方案

解决方案二:
刷新页面吧,骚年,想来signalR和js、ajax之类的目前对你来讲也太困难了
解决方案三:
引用1楼starfd的回复:

刷新页面吧,骚年,想来signalR和js、ajax之类的目前对你来讲也太困难了

-----------------------是的,是的,嘿嘿,但是自动滚动的话,在哪里设置滚动完刷新呢?前台,还是后台?
解决方案四:
document.getElementById("demo").scrollTop=0;下面加个js刷新代码
解决方案五:
滚动到头的时候加个刷新吧
解决方案六:
说白了,就是一个js滚到,判断滚动条到底部,然后通过ajax访问后台读取数据,然后拼接html到前台来展现。
解决方案七:
引用5楼hanjun0612的回复:

说白了,就是一个js滚到,判断滚动条到底部,然后通过ajax访问后台读取数据,然后拼接html到前台来展现。

请问,这个页面我想放两个gridview各自滚动各自的内容。能实现么?
解决方案八:
引用1楼starfd的回复:

刷新页面吧,骚年,想来signalR和js、ajax之类的目前对你来讲也太困难了

请问,这个页面我想放两个gridview各自滚动各自的内容。能实现么?
解决方案九:
既然document.getElementById("demo").scrollTop++这条语句是你写的,那么你就应该在这里扩展你的逻辑。
解决方案十:
引用3楼starfd的回复:

document.getElementById("demo").scrollTop=0;下面加个js刷新代码

确实可以在这里修改逻辑。不过一般来说,在加载数据时跳回“头”部去了,好像有点不合情理。一把来说,当你在执行document.getElementById("demo").scrollTop++的时候要判断是否“接近”那个if判断条件了,比如说按照120像素高做判断:if(document.getElementById("demo").scrollTop>=document.getElementById("demo1").offsetHeight-document.getElementById("demo").offsetHeight)-120;

这个条件成立就立刻异步加载新数据。在加载数据时你可以让marquee暂停滚动,或者不暂停滚动也可以。
解决方案十一:
嗯,把上面的120改为20,似乎更合理一点。离底部距离120像素就加载数据,有点早。改为20更好一下,根据你的marquee滚动速率来判断。
解决方案十二:
引用7楼ahya的回复:

Quote: 引用1楼starfd的回复:
刷新页面吧,骚年,想来signalR和js、ajax之类的目前对你来讲也太困难了

请问,这个页面我想放两个gridview各自滚动各自的内容。能实现么?

应该没问题
解决方案十三:
引用9楼sp1234的回复:

Quote: 引用3楼starfd的回复:
document.getElementById("demo").scrollTop=0;下面加个js刷新代码

确实可以在这里修改逻辑。不过一般来说,在加载数据时跳回“头”部去了,好像有点不合情理。一把来说,当你在执行document.getElementById("demo").scrollTop++的时候要判断是否“接近”那个if判断条件了,比如说按照120像素高做判断:if(document.getElementById("demo").scrollTop>=document.getElementById("demo1").offsetHeight-document.getElementById("demo").offsetHeight)-120;

这个条件成立就立刻异步加载新数据。在加载数据时你可以让marquee暂停滚动,或者不暂停滚动也可以。

-------------------------------------------------<script>functionmyrefresh(){window.location.reload();}varspeed=30functionMarquee(){if(document.getElementById("demo").scrollTop>=document.getElementById("demo1").offsetHeight-document.getElementById("demo").offsetHeight){document.getElementById("demo").scrollTop=0;myrefresh();}else{document.getElementById("demo").scrollTop++}}varMyMar=setInterval(Marquee,speed)document.getElementById("demo").onmouseover=function(){clearInterval(MyMar)}document.getElementById("demo").onmouseout=function(){MyMar=setInterval(Marquee,speed)}</script>上面这个可以实现当初始数据gridview表格超出设定的外部大小后,就在外部定义的区间内滚动,可以每滚完一次,刷新出一次新数据但是,现在如果初始数据gridview的内容没超出外部空间,此时不滚动,这时如果后台加入数据grid表格内容超出外部空间后,还是不滚动。。求助,怎么判断并滚动刷新呢?
解决方案十四:
引用11楼hanjun0612的回复:

Quote: 引用7楼ahya的回复:
Quote: 引用1楼starfd的回复:
刷新页面吧,骚年,想来signalR和js、ajax之类的目前对你来讲也太困难了

请问,这个页面我想放两个gridview各自滚动各自的内容。能实现么?

应该没问题

----------------还得麻烦您下-----------------<script>functionmyrefresh(){window.location.reload();}varspeed=30functionMarquee(){if(document.getElementById("demo").scrollTop>=document.getElementById("demo1").offsetHeight-document.getElementById("demo").offsetHeight){document.getElementById("demo").scrollTop=0;myrefresh();}else{document.getElementById("demo").scrollTop++}}varMyMar=setInterval(Marquee,speed)document.getElementById("demo").onmouseover=function(){clearInterval(MyMar)}document.getElementById("demo").onmouseout=function(){MyMar=setInterval(Marquee,speed)}</script>上面这个可以实现当初始数据gridview表格超出设定的外部大小后,就在外部定义的区间内滚动,可以每滚完一次,刷新出一次新数据但是,现在如果初始数据gridview的内容没超出外部空间,此时不滚动,这时如果后台加入数据grid表格内容超出外部空间后,还是不滚动。。求助,怎么判断并滚动刷新呢?
解决方案十五:
引用3楼starfd的回复:

document.getElementById("demo").scrollTop=0;下面加个js刷新代码

<script>functionmyrefresh(){window.location.reload();}varspeed=30functionMarquee(){if(document.getElementById("demo").scrollTop>=document.getElementById("demo1").offsetHeight-document.getElementById("demo").offsetHeight){document.getElementById("demo").scrollTop=0;myrefresh();}else{document.getElementById("demo").scrollTop++}}varMyMar=setInterval(Marquee,speed)document.getElementById("demo").onmouseover=function(){clearInterval(MyMar)}document.getElementById("demo").onmouseout=function(){MyMar=setInterval(Marquee,speed)}</script>上面这个可以实现当初始数据gridview表格超出设定的外部大小后,就在外部定义的区间内滚动,可以每滚完一次,刷新出一次新数据但是,现在如果初始数据gridview的内容没超出外部空间,此时不滚动,这时如果后台加入数据grid表格内容超出外部空间后,还是不滚动。。求助,怎么判断并滚动刷新呢?
解决方案:
在滚动事件里,应该先去后台查看是否有数据更新,有的话,需要改变你的滚动条高度document.getElementById("demo").scrollTop=0;因为第一次没有数据,所以滚动条被你赋值0了,你需要在重新赋值一下

时间: 2025-01-25 12:03:07

gridview 实现滚动了,但是内容怎么实时更新的相关文章

new-websocket获取服务器内容后实时显示在网页中

问题描述 websocket获取服务器内容后实时显示在网页中 <script> ws = new WebSocket("ws://192.168.0.171:1235"); ws.onopen = function () { // alert("连接成功"); ws.send('tom'); // alert("给服务端发送一个字符串:tom"); } ws.onmessage = function (e) { document.ge

循坏滚动-HorizontalScrollView + gridView 横向滚动

问题描述 HorizontalScrollView + gridView 横向滚动 HorizontalScrollView + gridView 横向滚动 如何实现来回循环滚动...像listview一样addheader /footer 所以用了github上的GridViewWithHeaderAndFooter 但是!怎么实现循环滚动.. 解决方案 http://jacular.iteye.com/blog/1632942

怎么将gridview中所选择的内容的值具体显示到另一个页面的textbox或者table中

问题描述 怎么将gridview中所选择的内容的值具体显示到另一个页面的textbox或者table中 解决方案 这就是页面之间传值啊,点击选择的时候触发一个事件,存在session里或者通过跳转的get方式传值.

asp.net使用Gridview控件显示数据库内容

实验主要步骤: 1:新建一个数据库名字为EmployDB,在其中添加一张表EmployInfo,字段有Name,Sex,Job,Salary, 并且向其中插入一些数据. 2: 新建一个ASP.NET程序,在主界面上拖放一个Gridview数据库控件. 3:添加命名空间:using System.Data.SqlClient; Default.aspx 使用Gridview控件显示数据库内容 老 蔡 Email:cxianfa@126.com 实验主要步骤: 1:新建一个数据库名字为EmployD

jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法_jquery

工程分享: 模块1:下拉菜单的实时显示最近一周时间: //显示日期下拉选框 for(var i=0;i<7;i++){ $("#choose1>option:eq("+i+")").html(GetDateStr(-i)); $("#choose1>option:eq("+i+")").attr("value",GetDateStr(-i));//该语句为了便于下拉选中的数据的值 } //

百度整合新浪微博内容的实时搜索服务上线

前日晚间,百度整合新浪微博内容的实时搜索服务上线.百度在其搜索结果中实时显示与关键词相关的最新新浪微博内容,这是新浪微博首次和第三方搜索引擎合作. 目前,用户通过百度查询新闻突发事件热门话题等相关关键词,百度将在新浪等四大门户微博数据中进行实时匹配资源,并在搜索结果页面显著位置呈现相关内容.在搜索结果页点击进入"最新微博结果"时,用户也可分别查看更多来自四大门户的微博数据. 百度公司总裁助理张东晨表示,此次与新浪微博达成合作,百度完成了对国内主流四大门户微博平台的内容整合.DCCI互联

百度整合四大门户网站微博内容推出实时搜索功

3月2日消息,百度整合四大门户网站的微博内容推出实时搜索功能.在百度查询新闻突发事件热门话题等关键词,将在结果页面显著位置看到包括新浪在内的四大门户微博相关内容. 在搜索结果页点击进入"最新微博结果"时,还可以分别查看更多来自四大门户的微博数据.这也是新浪微博首次和第三方搜索引擎合作. 有关人士分析,实时搜索功能将帮助更多网民包括非微博用户便捷分享微博平台上的最新资讯,或迎来真正的微博营销时代.

XMLHTTP无刷新自动实时更新数据

xml|数据|刷新|无刷新 传统上,我们浏览网页,如果加入最新的数据.只能是等我们重新向服务器端请求时才能显示出来.但是,对于一些时效性很强的网站,传统的这种做法是不能满足的. 我们可以让程序自动刷新,定时向服务器请求数据.5秒取一次数据,10秒取一次数据.利用XMLHTTP发出请求并取得数据.传到客户端,客户端重新组织并显示数据. demo.htm 前台显示. <script language="JavaScript">function GetResult(){/**--

使用Excel截屏功能实时更新数据

Excel是一款我们经常会用到的软件,但是它里面的一些诸如截屏等有趣的功能,不知道你是否有发现呢. Excel照相功能 说道截屏,大家的反应可能首先都会是Printscreen,但是Excel中,也有类似的功能,并且截下的对象还会随着数据的修改而修改. 首先,选择工具-自定义选项,在跳出的对话框中,选择命令选项.在左边的类别栏里,选择工具,然后再在右边的命令栏中,找到照相机. 拖动照相机选项,不要放开鼠标,直至到工具栏上相应的位置放开鼠标,这时照相机的快捷键便出现在了工具栏中. 框选想要截的内容