我就想实现从数据库读取记录后显示在页面上,然后将这些记录滚动显示。当最后一行记录从屏幕上方滚出后,再次读取读取数据库,如此反复。
读取数据并显示我用gridview,滚屏我用js来实现。
但是我碰到的疑问是在“//此处填写代码”地方应该怎么写才能实现要嘛再次读取数据库,要嘛刷新页面呢?<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>滚动显示</title>
<script language="javascript" charset="gb2312" type="text/javascript">
    var timer;
    function startScroll(){
        timer = setInterval("Scroll_ing()",10);
    }
    function stopScroll(){
        clearInterval(timer);
    }
    function Scroll_ing(){
        nowScroll=document.body.scrollTop+1 ;
        window.scroll(0,nowScroll);
        if(nowScroll!=document.body.scrollTop){
  //此处填写代码
        }
    }
    document.onmousedown=stopScroll;
    document.ondblclick=startScroll;
</script>
</head>
<body bgcolor="#fef4d9" onload="startScroll()">
    <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
            DataSourceID="AccessDataSource1" Width="438px" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None">
            <Columns>
                <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
                    SortExpression="id" />
                <asp:BoundField DataField="worktime" HeaderText="worktime" SortExpression="worktime" />
                <asp:BoundField DataField="didian" HeaderText="didian" SortExpression="didian" />
                <asp:BoundField DataField="content" HeaderText="content" SortExpression="content" />
                <asp:BoundField DataField="paigongzhe" HeaderText="paigongzhe" SortExpression="paigongzhe" />
            </Columns>
            <FooterStyle BackColor="Tan" />
            <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
            <HeaderStyle BackColor="Tan" Font-Bold="True" />
            <AlternatingRowStyle BackColor="PaleGoldenrod" />
        </asp:GridView>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/gonggao.mdb"
            SelectCommand="SELECT * FROM [paigong]"></asp:AccessDataSource>
    </form>
    <div id="addHeight" style="height:1px;width:1px;font-size:1px;background:#red">
</div>
<script language="javascript" charset="gb2312" type="text/javascript">document.getElementById("addHeight").style.height=document.body.clientHeight</script>
</body>
</html>

解决方案 »

  1.   

    干嘛用GridView来做,JS+Reapter来做嘛
      

  2.   

    用gridview和repeater都无所谓,这只是一个表现形式,关键是如何实现循环滚屏几次后再次去读取记录来进行下一轮的滚屏
      

  3.   

    我是用<marquee>和datagrid做的,代码如下:
    <marquee onmouseover="this.stop()" onmouseout="this.start()" scrollamount="2" scrolldelay="240"
                                                                direction="up" height="216">
                                <table class="body" 
                            cellspacing="1" cellpadding="0" width="183" align="center" 
                            bgcolor="#ffffff" border="0">
                                  <tbody>
                                    <tr>
                                      <td valign="middle" 
                                align="left" bgcolor="#ffffff"><p 
                                  class="style5 style26" align="left"><span 
                                  class="style27"></span><span class="a3">
                                        <asp:DataGrid id="dg_HYDT" runat="server" CellSpacing="1" ShowHeader="False" GridLines="None" CellPadding="0" AutoGenerateColumns="False" AllowPaging="True" BorderStyle="None" BackColor="Transparent">
                                            <FooterStyle BackColor="#99CCCC" ForeColor="#003399"></FooterStyle>
                                            <SelectedItemStyle BackColor="#009999" ForeColor="#CCFF99" Font-Bold="True"></SelectedItemStyle>
                                            <PagerStyle Mode="NumericPages" BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" Visible="False"></PagerStyle>
                                            <AlternatingItemStyle HorizontalAlign="Left" Font-Italic="False" Font-Strikeout="False" Font-Underline="False" Font-Overline="False" Font-Bold="False" VerticalAlign="Top"></AlternatingItemStyle>
                                            <ItemStyle BackColor="Transparent" ForeColor="#003399" HorizontalAlign="Left" Font-Italic="False" Font-Strikeout="False" Font-Underline="False" Font-Overline="False" Font-Bold="False" VerticalAlign="Top"></ItemStyle>
                                            <HeaderStyle BackColor="#003399" ForeColor="#CCCCFF" Font-Bold="True"></HeaderStyle>
                                            <Columns>
                                            <asp:TemplateColumn>
                                              <ItemTemplate> *&nbsp; </ItemTemplate>
                                              <HeaderStyle Width="10px"></HeaderStyle>
                                            </asp:TemplateColumn>
                                            <asp:TemplateColumn>
                                              <ItemTemplate>
                                                <asp:HyperLink runat="server" CssClass="a3" Text='<%# DataBinder.Eval(Container, "DataItem.m_title") %>' NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.m_ID", "system_m/HYDT_m/HYDT_details.aspx?m_ID={0}") %>' Target="_blank"></asp:HyperLink>
                                              </ItemTemplate>
                                            </asp:TemplateColumn>
                                            </Columns>
                                          </asp:DataGrid>
                                      </span></p></td>
                                    </tr>
                                  </tbody>
                                </table>
                                </marquee>数据绑定:
        private void DataBindTodg_HYDT()
        {
            SqlConnection con = DB.createCon();
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = new SqlCommand("select *from HYDT order by m_date DESC", con);
            DataSet ds = new DataSet();
            sda.Fill(ds, "HYDT");
            this.dg_HYDT.DataSource = ds.Tables["HYDT"];
            this.dg_HYDT.DataBind();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {            this.DataBindTodg_HYDT();
                
            }
        }
    整体思路就是datagrid读取数据库的内容,然后marque滚动显示,不知对你有没有帮助
      

  4.   

    可能是你分数太少了,高手都不来。下面仅提供思路你放两个隐藏框,隐藏框2属性改为runat="server"  双击会自动生成 OnServerChange事件(可能事件写错了,反正会生成)每次滚完一次,
    if(nowScroll ==document.body.scrollTop){
          //此处填写代码
              var times = document.all("隐藏框1").Value;
             if(times >=  你要滚的次数)
             {
                 document.all("隐藏框2").Value = document.all("隐藏框2").Value+1;
                 document.all("隐藏框1").Value = 0;
             }
             else
             {
                document.all("隐藏框1").Value = times+1;
             }
            }
      

  5.   

    我的想法是将滚动部分用单独的页面存放,然后在当前页面用img调用,类似于验证码
      

  6.   

    在服务器端按规则组成js就可以了.比如用递归等,具体什么js可以网上找找