datagrid中的分页的问题,不难的应该 http://expert.csdn.net/Expert/topic/1987/1987616.xml?temp=.1695978 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我刚开始学的时候自己写了自定义的控件 实现了上一页,下一页 首页,尾页 并转到第几页的功能代码不是很严紧,但完全可用,你可以研究一下using System;using System.Web.UI;using System.Web.UI.WebControls;using System.ComponentModel;using System.Data;using System.Drawing;namespace CdzDotNet{ /// <summary> /// DataGridNavigator 的摘要说明。 /// </summary> [DefaultProperty("Text"), ToolboxData("<{0}:DataGridNavigator runat=server></{0}:DataGridNavigator>")] public class DataGridNavigator : System.Web.UI.WebControls.WebControl { LinkButton LinkFirst = new LinkButton(); LinkButton LinkPreview = new LinkButton(); LinkButton LinkNext = new LinkButton(); LinkButton LinkLast = new LinkButton(); TextBox txtPageIndex = new TextBox(); Button btnGo = new Button(); TableRow row = new TableRow(); Label lblPageCount = new Label(); Label lblCurrentPage = new Label(); Label lblPageSize = new Label(); Label lblItemCount = new Label(); static private DataGrid _DataGrid; static private DataSet _ds; protected override void CreateChildControls() { //AddChildControls(); } protected override void Render(HtmlTextWriter Writer) { //this.EnsureChildControls(); base.Render(Writer); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); AddChildControls(); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { LinkFirst.Click += new System.EventHandler(LinkButton_Click); LinkPreview.Click += new System.EventHandler(LinkButton_Click); LinkNext.Click += new System.EventHandler(LinkButton_Click); LinkLast.Click += new System.EventHandler(LinkButton_Click); btnGo.Click += new System.EventHandler(btnGo_Click); } #endregion public override Color ForeColor { get {return row.ForeColor;} set {row.ForeColor = value;} } public string GotoText { get {return btnGo.Text;} set {btnGo.Text = value;} } public bool BoundDataGrid(DataGrid DataGridControl, DataSet ds) { _DataGrid = DataGridControl; _ds = ds; if (null==_DataGrid) return false; if (null==_ds) return false; _DataGrid.DataSource = _ds; _DataGrid.DataBind(); InitControls(); return true; } private bool BoundDataGrid() { if (_DataGrid==null || _ds==null) return false; if (!this.Page.IsPostBack) { _DataGrid.DataSource = _ds; } else { _DataGrid.DataSource = _ds.Tables[0].DefaultView; } //_DataGrid.CurrentPageIndex = 0; _DataGrid.DataBind(); InitControls(); return true; } private void InitControls() { lblItemCount.Text = _ds.Tables[0].Rows.Count.ToString(); lblCurrentPage.Text = Convert.ToString(_DataGrid.CurrentPageIndex+1); lblPageSize.Text = _DataGrid.PageSize.ToString().Trim(); lblPageCount.Text = _DataGrid.PageCount.ToString().Trim(); LinkFirst.CommandName = "0"; LinkFirst.Enabled = _DataGrid.CurrentPageIndex > 0; LinkPreview.CommandName = Convert.ToString(_DataGrid.CurrentPageIndex - 1); LinkPreview.Enabled = _DataGrid.CurrentPageIndex > 0; LinkNext.CommandName = Convert.ToString(_DataGrid.CurrentPageIndex + 1); LinkNext.Enabled = _DataGrid.CurrentPageIndex < _DataGrid.PageCount - 1; LinkLast.CommandName = Convert.ToString(_DataGrid.PageCount - 1); LinkLast.Enabled = _DataGrid.CurrentPageIndex < _DataGrid.PageCount - 1; } private void AddChildControls() { Controls.Clear(); Table table = new Table(); Controls.Add(table); table.Rows.Add(row); TableCell cell; LiteralControl labelText; cell = new TableCell(); cell.Wrap = false; row.Cells.Add(cell); labelText = new LiteralControl("共"); cell.Controls.Add(labelText); lblItemCount.Text = "AC"; cell.Controls.Add(lblItemCount); labelText = new LiteralControl("条"); cell.Controls.Add(labelText); cell.Controls.Add(Emptylable()); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(new LiteralControl("页次")); cell.Controls.Add(lblCurrentPage); lblCurrentPage.Text = "CP"; lblCurrentPage.ForeColor = System.Drawing.Color.Red; cell.Controls.Add(new LiteralControl("/")); cell.Controls.Add(lblPageCount); lblPageCount.Text = "PC"; cell.Controls.Add(new LiteralControl("页")); cell.Controls.Add(Emptylable()); row.Cells.Add(cell); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(lblPageSize); lblPageSize.Text = "PS"; cell.Controls.Add(new LiteralControl("条/页")); cell.Controls.Add(Emptylable()); row.Cells.Add(cell); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(LinkFirst); LinkFirst.Text = "[首页]"; cell.Controls.Add(Emptylable()); row.Cells.Add(cell); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(LinkPreview); LinkPreview.Text = "[上一页]"; cell.Controls.Add(Emptylable()); row.Cells.Add(cell); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(LinkNext); LinkNext.Text = "[下一页]"; cell.Controls.Add(Emptylable()); row.Cells.Add(cell); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(LinkLast); LinkLast.Text = "[尾页]"; cell.Controls.Add(Emptylable()); row.Cells.Add(cell); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(new LiteralControl("转到第")); row.Cells.Add(cell); cell = new TableCell(); cell.Controls.Add(txtPageIndex); txtPageIndex.Width = Unit.Parse("30"); txtPageIndex.Height = Unit.Parse("20"); row.Cells.Add(cell); cell = new TableCell(); cell.Controls.Add(new LiteralControl("页")); row.Cells.Add(cell); cell = new TableCell(); cell.Wrap = false; cell.Controls.Add(Emptylable()); cell.Controls.Add(btnGo); btnGo.Text = "GO"; row.Cells.Add(cell); } private LiteralControl Emptylable() { return new LiteralControl(" "); } private void LinkButton_Click(object sender, System.EventArgs e) { if (_DataGrid == null) return; _DataGrid.CurrentPageIndex = int.Parse(((LinkButton)sender).CommandName); BoundDataGrid(_DataGrid, _ds); } private void btnGo_Click(object sender, System.EventArgs e) { try { if (txtPageIndex.Text == "") return; if (int.Parse(txtPageIndex.Text)-1 > _DataGrid.PageCount - 1) return; if (int.Parse(txtPageIndex.Text)-1 < 0) return; _DataGrid.CurrentPageIndex = int.Parse(txtPageIndex.Text) - 1; BoundDataGrid(_DataGrid, _ds); txtPageIndex.Text = ""; } catch { } } }} 在datagird的PageIndexChanged事件中写ItemsGrid.CurrentPageIndex = e.NewPageIndex;DataGrid1.DataSource = ds.Tables(0);DataGrid1.DataBind(): 以下代码可以帮你实现“当前为第×页 共×页”:void showstats() {int i=DataGrid1.CurrentPageIndex+1;lblCurrentIndex.Text = "当前为第<font color=#cc0000>" + i+"</font>页";lblPageCount.Text = "共<font color=#cc0000>" + DataGrid1.PageCount+"</font>页";}然后在数据绑定的代码的后面加上showstats();注:你要添加两个Label:lblCurrentIndex和lblPageCount http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=B12283DE-DB20-4322-ACCC-12724442808A 怎么用vs2010的单元测试来测试呢 首页页广告 vs2005里的登陆项里面的控件怎么用的 [简单问题][空值问题][判断空值][如何写?] 很恼火的问题,请各位高手帮忙 如何模拟鼠标单击 各位可知,Google的左侧排名是如何实现的? 请问各位大侠,请问关于javascript控制窗口问题,急... Label换行的问题 select t.*, t.rowid from user t WHERE t.name LIKE 'a%c' 有这种查询麽? 求助,datagrid的一个简单问题? 如何在asp.net中实现关闭当前网页的功能?
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Drawing;namespace CdzDotNet
{
/// <summary>
/// DataGridNavigator 的摘要说明。
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:DataGridNavigator runat=server></{0}:DataGridNavigator>")]
public class DataGridNavigator : System.Web.UI.WebControls.WebControl
{ LinkButton LinkFirst = new LinkButton();
LinkButton LinkPreview = new LinkButton();
LinkButton LinkNext = new LinkButton();
LinkButton LinkLast = new LinkButton();
TextBox txtPageIndex = new TextBox();
Button btnGo = new Button();
TableRow row = new TableRow(); Label lblPageCount = new Label();
Label lblCurrentPage = new Label();
Label lblPageSize = new Label();
Label lblItemCount = new Label(); static private DataGrid _DataGrid;
static private DataSet _ds; protected override void CreateChildControls()
{
//AddChildControls();
} protected override void Render(HtmlTextWriter Writer)
{
//this.EnsureChildControls();
base.Render(Writer);
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
// InitializeComponent();
base.OnInit(e);
AddChildControls();
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
LinkFirst.Click += new System.EventHandler(LinkButton_Click);
LinkPreview.Click += new System.EventHandler(LinkButton_Click);
LinkNext.Click += new System.EventHandler(LinkButton_Click);
LinkLast.Click += new System.EventHandler(LinkButton_Click); btnGo.Click += new System.EventHandler(btnGo_Click); }
#endregion public override Color ForeColor
{
get {return row.ForeColor;}
set {row.ForeColor = value;}
}
public string GotoText
{
get {return btnGo.Text;}
set {btnGo.Text = value;}
} public bool BoundDataGrid(DataGrid DataGridControl, DataSet ds)
{
_DataGrid = DataGridControl;
_ds = ds; if (null==_DataGrid) return false;
if (null==_ds) return false; _DataGrid.DataSource = _ds;
_DataGrid.DataBind();
InitControls(); return true;
} private bool BoundDataGrid()
{
if (_DataGrid==null || _ds==null) return false; if (!this.Page.IsPostBack)
{
_DataGrid.DataSource = _ds;
}
else
{
_DataGrid.DataSource = _ds.Tables[0].DefaultView;
}
//_DataGrid.CurrentPageIndex = 0;
_DataGrid.DataBind(); InitControls(); return true;
} private void InitControls()
{
lblItemCount.Text = _ds.Tables[0].Rows.Count.ToString();
lblCurrentPage.Text = Convert.ToString(_DataGrid.CurrentPageIndex+1);
lblPageSize.Text = _DataGrid.PageSize.ToString().Trim();
lblPageCount.Text = _DataGrid.PageCount.ToString().Trim(); LinkFirst.CommandName = "0";
LinkFirst.Enabled = _DataGrid.CurrentPageIndex > 0; LinkPreview.CommandName = Convert.ToString(_DataGrid.CurrentPageIndex - 1);
LinkPreview.Enabled = _DataGrid.CurrentPageIndex > 0; LinkNext.CommandName = Convert.ToString(_DataGrid.CurrentPageIndex + 1);
LinkNext.Enabled = _DataGrid.CurrentPageIndex < _DataGrid.PageCount - 1; LinkLast.CommandName = Convert.ToString(_DataGrid.PageCount - 1);
LinkLast.Enabled = _DataGrid.CurrentPageIndex < _DataGrid.PageCount - 1; } private void AddChildControls()
{
Controls.Clear(); Table table = new Table();
Controls.Add(table); table.Rows.Add(row);
TableCell cell;
LiteralControl labelText; cell = new TableCell();
cell.Wrap = false;
row.Cells.Add(cell);
labelText = new LiteralControl("共");
cell.Controls.Add(labelText);
lblItemCount.Text = "AC";
cell.Controls.Add(lblItemCount);
labelText = new LiteralControl("条");
cell.Controls.Add(labelText);
cell.Controls.Add(Emptylable()); cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(new LiteralControl("页次"));
cell.Controls.Add(lblCurrentPage);
lblCurrentPage.Text = "CP";
lblCurrentPage.ForeColor = System.Drawing.Color.Red;
cell.Controls.Add(new LiteralControl("/"));
cell.Controls.Add(lblPageCount);
lblPageCount.Text = "PC";
cell.Controls.Add(new LiteralControl("页"));
cell.Controls.Add(Emptylable());
row.Cells.Add(cell);
cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(lblPageSize);
lblPageSize.Text = "PS";
cell.Controls.Add(new LiteralControl("条/页"));
cell.Controls.Add(Emptylable());
row.Cells.Add(cell);
cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(LinkFirst);
LinkFirst.Text = "[首页]";
cell.Controls.Add(Emptylable());
row.Cells.Add(cell); cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(LinkPreview);
LinkPreview.Text = "[上一页]";
cell.Controls.Add(Emptylable());
row.Cells.Add(cell); cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(LinkNext);
LinkNext.Text = "[下一页]";
cell.Controls.Add(Emptylable());
row.Cells.Add(cell); cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(LinkLast);
LinkLast.Text = "[尾页]";
cell.Controls.Add(Emptylable());
row.Cells.Add(cell);
cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(new LiteralControl("转到第"));
row.Cells.Add(cell);
cell = new TableCell();
cell.Controls.Add(txtPageIndex);
txtPageIndex.Width = Unit.Parse("30");
txtPageIndex.Height = Unit.Parse("20");
row.Cells.Add(cell); cell = new TableCell();
cell.Controls.Add(new LiteralControl("页"));
row.Cells.Add(cell); cell = new TableCell();
cell.Wrap = false;
cell.Controls.Add(Emptylable());
cell.Controls.Add(btnGo);
btnGo.Text = "GO"; row.Cells.Add(cell); } private LiteralControl Emptylable()
{
return new LiteralControl(" ");
} private void LinkButton_Click(object sender, System.EventArgs e)
{
if (_DataGrid == null) return;
_DataGrid.CurrentPageIndex = int.Parse(((LinkButton)sender).CommandName);
BoundDataGrid(_DataGrid, _ds);
} private void btnGo_Click(object sender, System.EventArgs e)
{
try
{
if (txtPageIndex.Text == "") return;
if (int.Parse(txtPageIndex.Text)-1 > _DataGrid.PageCount - 1) return;
if (int.Parse(txtPageIndex.Text)-1 < 0) return;
_DataGrid.CurrentPageIndex = int.Parse(txtPageIndex.Text) - 1;
BoundDataGrid(_DataGrid, _ds);
txtPageIndex.Text = ""; }
catch
{
}
}
}
}
DataGrid1.DataSource = ds.Tables(0);
DataGrid1.DataBind():
void showstats()
{
int i=DataGrid1.CurrentPageIndex+1;
lblCurrentIndex.Text = "当前为第<font color=#cc0000>" + i+"</font>页";
lblPageCount.Text = "共<font color=#cc0000>" + DataGrid1.PageCount+"</font>页";
}然后在数据绑定的代码的后面加上showstats();注:你要添加两个Label:lblCurrentIndex和lblPageCount