sql语句:SELECT TOP " + pgcount + " * FROM tb_news WHERE new_id >= (select top 1 min(new_id) from (select top " + curPgindex  * pgcount + " * from tb_news order by new_time desc) ) ORDER BY new_time asc为什么获取到值了 怎么页面上什么也没有呀??

解决方案 »

  1.   

    /// <summary>
            ///  获取新闻列表
            /// </summary>
            /// <param name="pgcount">每页显示条数</param>
            /// <param name="curPgindex">当前页面</param>
            /// <returns></returns>
            public static DataSet getNewslist(int pgcount,int curPgindex)
            {
                DataSet ds = new DataSet();
                OleDbConnection conn = new OleDbConnection(connStr);
                OleDbCommand cmd = new OleDbCommand();
                if (curPgindex == 1)
                {
                    cmd.CommandText = "SELECT TOP " + pgcount + " * FROM tb_news order by new_time desc;";
                }
                else
                {
                    cmd.CommandText = "SELECT TOP " + pgcount + " * FROM tb_news WHERE new_id >= (select top 1 min(new_id) from (select top " + curPgindex  * pgcount + " * from tb_news order by new_time desc) ) ORDER BY new_time asc";
                }
                cmd.Connection = conn;
                OleDbDataAdapter oda = new OleDbDataAdapter();
                try {
                    conn.Open();
                    oda.SelectCommand = cmd;
                    oda.Fill(ds);
                }
                catch (Exception ex)
                { throw ex; }
                finally { conn.Close(); }
                return ds;
            } DataSet ds = new DataSet();        ds = DAL.add.getNewslist(4, Convert.ToInt32(this.Label1.Text));
            int tcount = DAL.add.getNewsCount();
            this.Label3.Text = tcount.ToString();
            PagedDataSource pds = new PagedDataSource();
            pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 4;
            pds.CurrentPageIndex = Convert.ToInt32(Label1.Text) - 1;
            if (tcount % 4 == 0) { Label2.Text = (tcount / 4).ToString(); }
            else { Label2.Text = ((tcount / 4) + 1).ToString(); }        this.DataList1.DataSource = pds;
            this.DataList1.DataKeyField = "new_id";
            this.DataList1.DataBind();
    }
    我调试时 数据源里面都有数据的  可为什么页面上却没有显示??
      

  2.   

    我不太記得PagedDataSource要不要.DataBind()了數據源有資料,那問題應該出在pds上了哈
      

  3.   

    你绑定是怎么写的? 赋值给DataSource之后 .BindData() 写了吗?
      

  4.   


    DataSet ds = new DataSet();  ds = DAL.add.getNewslist(4, Convert.ToInt32(this.Label1.Text));
      int tcount = DAL.add.getNewsCount();
      this.Label3.Text = tcount.ToString();
      PagedDataSource pds = new PagedDataSource();
      pds.DataSource = ds.Tables[0].DefaultView;
      pds.AllowPaging = true;
      pds.PageSize = 4;
      pds.CurrentPageIndex = Convert.ToInt32(Label1.Text) - 1;
      if (tcount % 4 == 0) { Label2.Text = (tcount / 4).ToString(); }
      else { Label2.Text = ((tcount / 4) + 1).ToString(); }  this.DataList1.DataSource = pds;
      this.DataList1.DataKeyField = "new_id";
      this.DataList1.DataBind();  
      

  5.   

    我的意思是 我不記得pds.DataBind()這句需要不
      

  6.   

    估计不一定行  因为最后是给datalist 了
      

  7.   

    自己断点跟,看下dataset 和 pds
      

  8.   


    我看到页面没有数据 就加断点调试了   dataset 和 pds 都有数据  但是页面上却出不来
      

  9.   

    自己調試到datelist哪一步看看有沒有數據
      

  10.   

    检查下 pds.CurrentPageIndex = Convert.ToInt32(Label1.Text) - 1;  当前页面的值是不是正确的
      

  11.   

    datalist 编辑模板了么 怎么编辑了 
      

  12.   

    <asp:DataList ID="DataList1" runat="server">
                <ItemTemplate>
                    <div>
                        <ul style="margin:0px; padding:0px;">
                            <li style="line-height:25px; list-style-type:none;">                        
                                <asp:HyperLink ID="HyperLink1" runat="server" Font-Size="Small" ToolTip='<%#Eval("new_title") %>' NavigateUrl='<%#Eval("new_staURL") %>' ForeColor="Black">
                                    <%#Eval("new_title") %>
                                </asp:HyperLink>
                            </li>
                        </ul>
                    </div>
                    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
                </ItemTemplate>
            </asp:DataList>是这样编辑的
      

  13.   

    sql语句:SELECT TOP " + pgcount + " * FROM tb_news WHERE new_id >= (select top 1 min(new_id) from (select top " + curPgindex * pgcount + " * from tb_news order by new_time desc) ) ORDER BY new_time asc为什么获取到值了 怎么页面上什么也没有呀??第一页总是没问题。。
      

  14.   

    哈哈  散分  搞定了  嘿嘿 ~~~~~~~~~~pds.CurrentPageIndex = Convert.ToInt32(Label1.Text) - 1;把这一句去掉 就ok 了但是  不知道为什么 不过 总算。。先不散分    到今天晚上再散   还希望有高手解释一下 谢过了
      

  15.   


    呵呵 看一下 你的Label1.Text 是什么值
      

  16.   


    我的lable1很正常呀 默认是1。点击下一页就变成2了,在点击上一页又变成1.。怎么了 有疑问?
      

  17.   


    真分页的话就没必要用 PagedDataSource  了吧 把该显示那页的数据全读出来 直接绑定到datalist就行了吧  配合aspnetpager分页读取数据
      

  18.   

            DataTable NewsDT = B.List(Bwhere);
            PageIndex.PageSize = int.Parse(AppConfig.PageSize);
            PageIndex.DataSource = NewsDT;        NewsList.DataSource = PageIndex.PagedOutDataSource;
            NewsList.DataBind();
      

  19.   

    嘿嘿嘿,DataGrid 的 CurrentPageIndex 默认值是0. 也就是说0是第一页,1是第二页……
      

  20.   


    嘿嘿..不知道你界面的控件的CurrentPageIndex设过值没...
    总之先记下了..以后我遇到了也就不怕了.