分页用户控件的问题

qqhmitzk 2008-07-07 10:14:50

namespace Soft.UserControls
{
using System;
using System.Data;
using System.Drawing;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using HuaSoft.DbCon;
using System.Web.UI;
/// <summary>
/// reper 的摘要说明。
/// </summary>
/// [DefaultProperty("SelectCommand")]

public class reper : System.Web.UI.UserControl
{
private CDbCon myDbCon;
//最后一页
protected System.Web.UI.WebControls.LinkButton lbtnDownPage;
//下一页
protected System.Web.UI.WebControls.LinkButton lbtnNextPage;
//上一页
protected System.Web.UI.WebControls.LinkButton lbtnpritPage;
//第一页
protected System.Web.UI.WebControls.LinkButton lbtnFirstPage;
//总分页数
protected System.Web.UI.WebControls.Label labPage;
//当前页码
protected System.Web.UI.WebControls.Label LabCountPage;
//查询字符串
protected System.Web.UI.WebControls.Label Lab_cx;
//显示绑定控件的记录信息(总记录数,总分页数,当前页码)
protected System.Web.UI.WebControls.Label Messge;
private string str;
private Control controlId;

private void Page_Load(object sender, System.EventArgs e)
{
myDbCon=new CDbCon(Session["sConnectionString"].ToString());
if(!Page.IsPostBack)
{ labPage.Text="1";
bind(str);

}
// 在此处放置用户代码以初始化页面
}
//控件类型
public Control ControlId
{
get
{
return controlId;
}
set
{
controlId = value;
}
}
//获取字符串
public string Str1
{
get
{
return str;
}
set
{
str = value;
}
}
//绑定相关控件(Reapter,Datalist)
public void bind(string str11)
{
this.Lab_cx.Text=str11;
DataSet ds=new DataSet();
ds=myDbCon.Select_RepList(Lab_cx.Text);
PagedDataSource _dataSource = new PagedDataSource();
_dataSource.DataSource = ds.Tables[0].DefaultView;

_dataSource.AllowPaging = true;
_dataSource.PageSize=15;
ViewState["CurrentPage"] = 0;
ViewState["CurrentPage"] = Convert.ToInt32(this.labPage.Text)-1;
_dataSource.CurrentPageIndex = Convert.ToInt32(this.labPage.Text)-1;
Getctrtype( _dataSource);
LabCountPage.Text =_dataSource.PageCount.ToString();
showdipay( ds.Tables[0].Rows.Count,_dataSource.Count);

}
//当点击分页按钮时,将重新绑定
public void bind2( )
{ DataSet ds1=new DataSet();
//填充记录集
ds1=myDbCon.Select_RepList(this.Lab_cx.Text);
//新建一PagedDataSource对象实例
PagedDataSource _dataSource = new PagedDataSource();
//绑定PagedDataSource
_dataSource .DataSource = ds1.Tables[0].DefaultView;
_dataSource.AllowPaging = true;
_dataSource.PageSize=15;
ViewState["CurrentPage"] = 0;
ViewState["CurrentPage"] = Convert.ToInt32(this.labPage.Text)-1;
_dataSource.CurrentPageIndex = Convert.ToInt32(this.labPage.Text)-1;
Getctrtype( _dataSource);
LabCountPage.Text =_dataSource.PageCount.ToString();
showdipay( ds1.Tables[0].Rows.Count,_dataSource.Count);

}
//判断类型并绑定之
private void Getctrtype( PagedDataSource _dataSource)
{
if (controlId is Repeater)
{
Repeater cntrl = (Repeater)controlId;
cntrl.DataSource = _dataSource ;
cntrl.DataBind();
}
else if(controlId is DataView)
{
DataGrid cntrl = (DataView)controlId;
cntrl.DataSource = _dataSource ;
cntrl.DataBind();
}
else if(controlId is DataGrid)
{
DataGrid cntrl = (DataGrid)controlId;
cntrl.DataSource = _dataSource ;
cntrl.DataBind();
}
else if(controlId is DataList)
{
DataList cntrl = (DataList)controlId;
cntrl.DataSource = _dataSource ;
cntrl.DataBind();
}
}
//显示分页页数,当前页数
private void showdipay( int records ,int pagecount)
{
this.lbtnFirstPage.Visible=true;
this.lbtnpritPage.Visible=true;
this.lbtnNextPage.Visible=true;
this.lbtnDownPage.Visible=true;
this.lbtnpritPage.Enabled = true;
this.lbtnFirstPage.Enabled = true;
this.lbtnNextPage.Enabled = true;
this.lbtnDownPage.Enabled = true;
if(Int32.Parse(ViewState["CurrentPage"].ToString())<=0&& Convert.ToInt32(labPage.Text)<=1)
{
this.lbtnpritPage.Enabled = false;
this.lbtnFirstPage.Enabled = false;
}
if (Int32.Parse(ViewState["CurrentPage"].ToString())+1==pagecount)
{
this.lbtnNextPage.Enabled = false;
this.lbtnDownPage.Enabled = false;
}
labPage.Text =((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();
string str1 = "数据源共有<b><FONT color= #ff0000 > " + records+ "</FONT></b>笔数据记录," ;
str1 +="当前为第<b><font color=red>"+labPage.Text+"</font></b>页,共<b><font color=red>"+LabCountPage.Text +"</font></b>页";
this.Messge.Text=str1;
}
//
private void NavigateToPage(object sender, System.EventArgs e)
{ //获取分页指令
string PageInfo = ((LinkButton)sender).CommandName;

switch (PageInfo)
{ //第一页
case "First":
this.labPage.Text ="1";

break;
//上一页
case "pre":
if(Int32.Parse(ViewState["CurrentPage"].ToString())>0)
{
ViewState["CurrentPage"]=Int32.Parse(ViewState["CurrentPage"].ToString())-1;
this.labPage.Text=((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();

}

break;
//下一页
case "Next":
if(Int32.Parse(ViewState["CurrentPage"].ToString())<(Int32.Parse(this.LabCountPage.Text))-1)

{
ViewState["CurrentPage"]=Int32.Parse(ViewState["CurrentPage"].ToString())+1;
this.labPage.Text=((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();

}
break;
//最后一页
case "last":
ViewState["CurrentPage"]=(Int32.Parse(LabCountPage.Text)-1);
this.labPage.Text =((Int32.Parse(ViewState["CurrentPage"].ToString()))+1).ToString();
break;
}
//绑定控件
bind2();
}

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

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.lbtnFirstPage.Click += new System.EventHandler(this.lbtnFirstPage_Click);
this.lbtnpritPage.Click += new System.EventHandler(this.lbtnpritPage_Click);
this.lbtnNextPage.Click += new System.EventHandler(this.lbtnNextPage_Click);
this.lbtnDownPage.Click += new System.EventHandler(this.lbtnDownPage_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void lbtnFirstPage_Click(object sender, System.EventArgs e)
{ NavigateToPage(sender,e);
}

private void lbtnpritPage_Click(object sender, System.EventArgs e)
{NavigateToPage(sender,e);
}

private void lbtnNextPage_Click(object sender, System.EventArgs e)
{NavigateToPage(sender,e);
}

private void lbtnDownPage_Click(object sender, System.EventArgs e)
{NavigateToPage(sender,e);

}
}
}


...全文
257 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqhmitzk 2008-07-07
  • 打赏
  • 举报
回复
如上图所显示
qqhmitzk 2008-07-07
  • 打赏
  • 举报
回复
qqhmitzk 2008-07-07
  • 打赏
  • 举报
回复
分页控件中已经定义啦
xhan2000 2008-07-07
  • 打赏
  • 举报
回复
Reapter需要自定义数据分页
qqhmitzk 2008-07-07
  • 打赏
  • 举报
回复

//引用页1.aspx 代码
//Html 注册
<%@ Register TagPrefix="uc1" TagName="reper" Src="../../../UserControls/reper.ascx" %>
//实例化
protected HuaSoftDRP.UserControls.reper Reper1;
//
string strsql="select * from tb";
Reper1.Str1=strsql;
//Reapter1为1.aspx 的一Reapter 控件
Reper1.ControlId=Reapter1;
问题:
只是记录信息变化。而Reapter的记录总是第一页的记录,没有变化

110,024

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧