读书人

大师快来小弟需要

发布时间: 2012-06-03 16:59:40 作者: rapoo

大师快来,小弟需要求助
我写了个类,有个方法 public PagedDataSource getware()
{
string strcon = ConfigurationManager.ConnectionStrings["SuperMarketDBConnectionString"].ConnectionString;
string str = "select * from T_Ware";
SqlConnection con=new SqlConnection ();
con.ConnectionString =strcon ;
SqlDataAdapter sda = new SqlDataAdapter(str, con);
DataSet ds = new DataSet();
sda.Fill(ds, "Ware");
PagedDataSource pds= new PagedDataSource();
pds.DataSource = ds.Tables["Ware"].DefaultView;
pds.AllowPaging = true;
pds.PageSize = 6;
return pds;

}
内容页里面有个datalist和objectdatasourse,我用objectdatasourse绑定到这个方法,在datalist绑定objectdatasourse,可是我数据库里面有14条记录,我要分3页来显示,然后我在内容页立面图添加了2个linkbutton,可是我就是起不到,上一页,下一页的效果

pageload里面的代码是

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Class1 cs = new Class1();
PagedDataSource pds = cs.getware();
Labeltotal.Text = "共" + pds.PageCount + "页";
Labelcurrent.Text = "当前第" + ((pds.CurrentPageIndex) + 1).ToString() + "页";
Session["pds"] = pds;
}

}
protected void LinkButton3_Click(object sender, EventArgs e)
{
PagedDataSource pds = (PagedDataSource)Session["pds"];
if (!pds.IsFirstPage)
pds.CurrentPageIndex -= 1;
}
protected void LinkButton4_Click(object sender, EventArgs e)
{
PagedDataSource pds = (PagedDataSource)Session["pds"];
if (!pds.IsLastPage )
pds.CurrentPageIndex += 1;
}

我无论用viewstate还是session都没效果

[解决办法]
首先我暂时不知道你这是什么原因,会不会是数据太多了?这种方法没用过,后期该的话害死你!!!
我可以推荐个方法给你
注意:我这个暂时写的是Oracle的分页句子,真正的分页

C# code
        //分页方法        /// <summary>        /// 分页获取数据        /// </summary>        /// <param name="tableName">数据表名称</param>        /// <param name="columns">列名,为空则默认检索所有字段</param>        /// <param name="where">检索条件,可以为空</param>        /// <param name="orderColumns">排序字段+排序规则</param>        /// <param name="pageSize">每页显示记录数</param>        /// <param name="pageIndex">要显示的页码</param>        /// <param name="recordCount">总记录数</param>        /// <returns></returns>        public DataSet GetData(string tableName, string columns, string where, string orderColumns, int pageSize, int pageIndex, ref int recordCount)        {            if (string.IsNullOrEmpty(tableName))            {                return null;            }            else            {                string getCountSql = string.Format("SELECT COUNT (*)  FROM {0} WHERE 1=1 {1}", tableName, where);                recordCount = tools.GetRecordCount(getCountSql);                int rowStart = pageIndex * pageSize;                int rowEnd = (pageIndex + 1) * pageSize;                string sql = "";                if (!string.IsNullOrEmpty(orderColumns))                {                    orderColumns = " order by " + orderColumns;                }                if (string.IsNullOrEmpty(columns))                {                     columns = " * ";                    sql = string.Format("select * from (SELECT rownum rn, e.{0}  FROM (select * from {1} WHERE 1=1  {4} {5} ) e  where  rownum<={3}) where rn>{2}", columns, tableName, rowStart, rowEnd, where, orderColumns);//对应的SQL语句                }                else                {                    sql = string.Format("select * from (SELECT rownum rn, {0}  FROM (select * from {1} WHERE 1=1  {4} {5} ) e  where  rownum<={3}) where rn>{2}", columns, tableName, rowStart, rowEnd, where, orderColumns);//对应的SQL语句                }                return tools.GetData(sql);//这里是我封装的一个获取结果集的方法,和你上面的那个getware()所起到的作用是一样的,你可以把这里替换掉            }        } 

读书人网 >asp.net

热点推荐