林婉馨的大学生活:.net(c#)b/s中的datagrid和datalist哪个有分页功能?

来源:百度文库 编辑:高校问答 时间:2024/04/28 17:28:40
如何做?最好有代码?

//以下是datagrid分页
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace dgOrdl
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
this.DataGrid1.AllowPaging=true;//启用分页
this.DataGrid1.PageSize=5;//每页的个数
this.DataGrid1.PagerStyle.NextPageText="下一页";
this.DataGrid1.PagerStyle.PrevPageText="上一页";//上下页的导航文本
//绑定数据
BindDataToDataGrid();
}
}

private void BindDataToDataGrid()
{
//初始化数据集
System.Data.SqlClient.SqlConnection con=new System.Data.SqlClient.SqlConnection("server=.;database=northwind;integrated security=sspi");
con.Open();
System.Data.SqlClient.SqlDataAdapter sdap=new System.Data.SqlClient.SqlDataAdapter("select customerID,companyName from Customers",con);
DataSet ds=new DataSet("myds");
sdap.Fill(ds,"Employees");
//绑定数据
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
con.Close();

}
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
//指定新的页索引
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
//重新绑定数据
this.BindDataToDataGrid();
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

}
}

//datalist没有自带的分页功能,这里是借助PageDataSource进行分页
//以下是datalist的分页代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace dgOrdl
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button btnPrev;
protected System.Web.UI.WebControls.Button btnNext;
protected System.Web.UI.WebControls.Label lblMsg;
protected System.Web.UI.WebControls.Label lblIndex;
protected System.Web.UI.WebControls.DataList DataList1;

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
BindDataToDataList();
}
}

private void BindDataToDataList()
{
int index=System.Convert.ToInt32(this.lblIndex.Text);//当前页码
//初始化数据集
System.Data.SqlClient.SqlConnection con=new System.Data.SqlClient.SqlConnection("server=.;database=northwind;integrated security=sspi");
con.Open();
System.Data.SqlClient.SqlDataAdapter sdap=new System.Data.SqlClient.SqlDataAdapter("select customerID,companyName from Customers",con);
DataSet ds=new DataSet("myds");
sdap.Fill(ds,"Employees");
//绑定数据
System.Web.UI.WebControls.PagedDataSource ps=new PagedDataSource();
ps.DataSource=ds.Tables["Employees"].DefaultView;
ps.AllowPaging=true;
ps.PageSize=5;
ps.CurrentPageIndex=index-1;//设置新的索引
//索引按钮的状态
this.btnNext.Enabled=true;
this.btnPrev.Enabled=true;
if(index==1)
{
this.btnPrev.Enabled=false;
}
else if(index==ps.Count)
{
this.btnNext.Enabled=false;
}
//绑定数据
this.DataList1.DataSource=ps;
this.DataList1.DataBind();
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnPrev.Click += new System.EventHandler(this.btnPrev_Click);
this.btnNext.Click += new System.EventHandler(this.btnNext_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void btnNext_Click(object sender, System.EventArgs e)
{
this.lblIndex.Text=System.Convert.ToString(System.Convert.ToInt32(this.lblIndex.Text)+1);//下一页
//重新绑定数据
BindDataToDataList();
}

private void btnPrev_Click(object sender, System.EventArgs e)
{
this.lblIndex.Text=System.Convert.ToString(System.Convert.ToInt32(this.lblIndex.Text)-1);//上一页
//重新绑定数据
BindDataToDataList();
}

}
}

首先 两个控件都可以做分页.
dataGrid 是自带的分页控件.但不好用.
dataList 可以使用用户自定义控件来作分页当然 dataGrid 也可以.

Datagrid
上网搜就得了,一大堆

都可以做分页哈
dataGrid没挑战哈
dataList可以自己设计
代码懒得写