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);

}
}
}

解决方案 »

  1.   


    //引用页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的记录总是第一页的记录,没有变化