大师快来,小弟需要求助
我写了个类,有个方法 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的分页句子,真正的分页
//分页方法 /// <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()所起到的作用是一样的,你可以把这里替换掉 } }