DataList分页是相对比较复杂的事情(至少对于你目前的基础...)
解决方案 »
- mschart柱状图列名显示问题
- 如何获取文件夹下当天产生或修改的所有文件?
- 请问c#中的file类和fileinfo类有什么区别?
- 关于动态生成静态页面的问题
- 用OracleDataAdapter連接oracle 數據庫時, 測試連接表示成功,也能看到數據庫中的表, 但不能生成sql語句.求救!!!!!
- 请问C#winform用哪个控件能播放MKV影片
- 关于 yield语句和内存加载.
- vs2010中,别人做好的程序,我进入源代码的时候怎嘛显示函数之间声明不明确啦?
- 我的.NET怎么没有System.Web.Mail??奇怪ING
- 创建和访问xml web services的问题,我自己已经完全解决了,有谁想知道答案,给我50分就告诉你
- 在做注册时,检查用户名是否存在 ?如何写,关键代码
- 如何在vs2005中将密码输入框中的输入值显示为*号??? 一个.net小菜鸟的提问
一个是通过存储过程
另一个是通过datalist
不管哪一个 对于datalist来说都是相当的复杂
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = (ConfigurationManager.ConnectionStrings["ConnStr"]).ToString();
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from 发言 order by 发表时间 desc";
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "发言");
DataTable jilu = ds.Tables["发言"];
int totalr = jilu.Rows.Count;
Label2.Text = totalr.ToString(); int totalpage;
if (totalr < pagesize)
totalpage = 1;
else if (totalr % pagesize != 0)
totalpage = totalr / pagesize + 1;
else totalpage = totalr / pagesize;
Label1.Text = totalpage.ToString(); Label3.Text = pageno.ToString();
DataTable tempjilu = jilu.Clone();
int i, j;
for (i = (pageno - 1) * pagesize; i <pageno * pagesize ; i++)
{
if (i < 0 || i > jilu.Rows.Count - 1)
break;
DataRow dr = tempjilu.NewRow();
for (j = 0; j < jilu.Columns.Count - 1; j++)
dr[jilu.Columns[j].ColumnName] = jilu.Rows[i].ItemArray[j];
tempjilu.Rows.Add(dr);
}
DataList1.DataSource = tempjilu;
DataList1.DataBind();这是一段程序侃侃把?
我也有问题大家多帮忙!
private void ListBind(string type, string text)
{
string strCmd = "";
string tableName = "";
strCmd = "sql 语句";
ds = AccessData.GetData(strCmd, tableName);
//if(ds.Tables[tableName].Rows.Count > 1)
ps = new PagedDataSource();
ps.DataSource = ds.Tables[tableName].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 5;
ps.CurrentPageIndex = Convert.ToInt32(lblCurrentPage.Text) - 1;
this.Label7.Text = ps.PageCount.ToString();
if (ps.IsFirstPage)
{//如果是最前页,上页按纽不可用
lbnPrevPage.Enabled = false;
this.LinkButton1.Enabled = false;
}
else
{
lbnPrevPage.Enabled = true;
this.LinkButton1.Enabled = true;
}
if (ps.IsLastPage)
{//如果是最后页,下页按纽不可用
lbnNextPage.Enabled = false;
this.LinkButton2.Enabled = false;
}
else
{
lbnNextPage.Enabled = true;
this.LinkButton2.Enabled = true;
}
this.DataList1.DataSource = ps;
this.DataList1.DataKeyField = "wad_id";
this.DataList1.DataBind();
}
//换页按钮的程序
protected void PageChange(object sender, EventArgs e)
{
string ControlID = ((Control)sender).ID;// "lbnPrevPage"
switch (ControlID)
{
case "lbnPrevPage":
lblCurrentPage.Text = Convert.ToString(Convert.ToInt32(lblCurrentPage.Text) - 1);
break;
case "lbnNextPage":
lblCurrentPage.Text = Convert.ToString(Convert.ToInt32(lblCurrentPage.Text) + 1);
break;
case "LinkButton1":
lblCurrentPage.Text = "1";
break;
case "LinkButton2":
lblCurrentPage.Text = this.Label7.Text;
break;
default:
break;
}
this.ListBind(Request.QueryString["type"], Request.QueryString["txt"]);
}
{
PageSize = 5;
rc1.Text=PageSize.ToString();
CurrentPage=0;
RecordCount=this.GetRecordCount();
PageCount = (RecordCount%PageSize)>0?(RecordCount/PageSize)+1:(RecordCount/PageSize);//取出他的最大页码数采用?三元运算
pc1.Text=PageCount.ToString();
ArrayList al=new ArrayList();
for(int i=1;i<PageCount+1;i++)
{
al.Add(i);
}
if(!Page.IsPostBack)
{
jp1.DataSource=al;
jp1.DataBind();
mfbind();
}
}
public int GetRecordCount()
{
conn.Open();
SqlCommand cmd=new SqlCommand("select count(*) as cnt from table_news",conn);
int intCount=int.Parse(cmd.ExecuteScalar().ToString());
cmd.Dispose();
conn.Close();
return intCount;
}
private IList DataSource()
{
// int StartIndex;
// StartIndex = CurrentPage*PageSize;
//
// string strSql = "select * from table_news";
// DataSet ds = new DataSet();
// SqlDataAdapter da = new SqlDataAdapter(strSql,conn);
// da.Fill(ds,StartIndex,PageSize,"table_news");
// return ds.Tables["table_news"].DefaultView;
}
private void mfbind()
{
dList.DataSource=(DataView)DataSource();
dList.DataBind();
fp1.Enabled=true;//面板初始化,全部的按钮控件设置用可用
np1.Enabled = true;
pp1.Enabled = true;
lp1.Enabled=true;
if(CurrentPage==(PageCount-1)) //如果是最后一页则下一页和末页的按钮变化不可用
{
np1.Enabled = false;
lp1.Enabled=false;
}
if(CurrentPage==0) //如果是第一页则首页和上一页的按钮变化为不可用
{
pp1.Enabled = false;
fp1.Enabled=false;
}
cp1.Text = (CurrentPage+1).ToString();
}
public void Page_OnClick(Object sender,CommandEventArgs e) //这个函数很关键,他将处理所有面板按钮的事件
{
CurrentPage =int.Parse(cp1.Text.Trim())-1;
PageCount =int.Parse(pc1.Text.Trim());
string cnstr = e.CommandName;
switch(cnstr)
{
case "first":
CurrentPage=0;
break;
case "next":
if(CurrentPage<(PageCount-1)) CurrentPage++;
break;
case "divv":
if(CurrentPage>0) CurrentPage--;
break;
case "last":
CurrentPage=PageCount-1;
break;
}
mfbind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.fp1.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.pp1.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.np1.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.lp1.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
this.jp1.SelectedIndexChanged += new System.EventHandler(this.jp1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void jp1_SelectedIndexChanged(object sender, System.EventArgs e)
{
CurrentPage=int.Parse(jp1.SelectedItem.Text.Trim())-1;
mfbind();
}
}
}
private void jp1_SelectedIndexChanged(object sender, System.EventArgs e)
{
CurrentPage=int.Parse(jp1.SelectedItem.Text.Trim())-1;
mfbind();
}
}
http://blog.csdn.net/dezwen/archive/2007/07/23/1702371.aspx
看不明白就查查msdn上的fill SqlDataAdapter myDataAdapter = new SqlDataAdapter(cmdtext, DBConnection);//创建访问数据表的DataAdapter对象
//使用DataSet对象存放数据表
DataSet myDataSet = new DataSet();
int startnum = datasize * (Int32.Parse(Label1.Text) - 1);
myDataAdapter.Fill(myDataSet, startnum, datasize, "information");
//使用DataGrid显示数据
DataList1.DataSource = myDataSet.Tables["information"].DefaultView;
DataList1.DataBind();
DBConnection.Close();