namespaceDotNet.Controls
{//分页控件(使用代码实现,不用存储过程)///UcPageControlByCode///修改纪录//2010-01-06 胡勇 修改转到某页由原来的KeyPress方法改为KeyDown,让用户按回车键确认转页,以防止连续绑定两次。///2011-01-06 胡勇 增加对分页控件的初始化代码:public DataTable InitializePageControl()。///2011-01-05 胡勇 创建分页控件///2011-04-02 胡勇 优化代码、减少不必要的私有变量,去掉多余的代码/胡勇///80368704///80368704@qq.com//[ToolboxItem(true)]
[DefaultEvent("OnEventPageClicked")]
[ToolboxBitmap(typeof(UcPageControlByCode),"Images.UcPageControlByCodeIcon.png")]
[Description("分页控件(使用代码实现,不用存储过程)")]publicpartialclassUcPageControlByCode : UserControl
{#region私有变量intrecordCount=0;//记录数intpageCount=0;//总页数intpageIndex=0;//当前页#endregion#region自定义事件//单击分页按钮(第一页、上一页、下一页、最后页、跳页)时发生///[Category("UcPageControlByCode"), Description("单击分页按钮时发生")]publiceventEventHandler OnEventPageClicked;#endregion#region自定义属性privateint_pageSize=50;//分页大小privatestring_sqlWhereStatement=string.Empty;//MsSql Where语句privatestring_sqlConnString=string.Empty;//MsSql 数据库连接字符串privatestring_tableName=string.Empty;//表名privatestring_orderField=string.Empty;//数据表的排序字段privatestring_primaryKey=string.Empty;//数据表的主键privatestring_queryFieldList="*";//字段列表(默认为:*)privateDataTable _pageTable=newDataTable();//返回当前页码///publicintPageIndex
{get{returnpageIndex+1;
}
}//得到或设置分页大小(默认为:50)///[Browsable(true), Category("UcPageControlByCode"), Description("得到或设置分页大小(默认为:50)")]publicintPageSize
{get{return_pageSize;
}set{
_pageSize=value;
}
}//SQL语句的Where表达式///[Browsable(false), Category("UcPageControlByCode"), Description("得到或设置SQL语句的Where表达式")]publicstringSqlWhereStatement
{get{return_sqlWhereStatement;
}set{
_sqlWhereStatement=value;
}
}//得到或设置SqlServer的连接字符串///[Browsable(false), Category("UcPageControlByCode"), Description("得到或设置SqlServer的连接字符串")]publicstringSqlConnString
{get{return_sqlConnString;
}set{
_sqlConnString=value;
}
}//得到用户单击分页按钮后返回的DataTable///[Browsable(false), Category("UcPageControlByCode"), Description("得到用户单击分页按钮后返回的DataTable")]publicDataTable PageTable
{get{return_pageTable;
}
}//设置或得到与分页控件绑定的表名或视图名///[Browsable(true), Category("UcPageControlByCode"), Description("设置或得到与分页控件绑定的表名或视图名")]publicstringTableName
{get{return_tableName;
}set{
_tableName=value;
}
}//设置或得到分页控件排序字段///[Browsable(true), Category("UcPageControlByCode"), Description("设置或得到分页控件排序字段")]publicstringOrderField
{get{return_orderField;
}set{
_orderField=value;
}
}//设置或得到分页控件绑定数据表的主键///[Browsable(true), Category("UcPageControlByCode"), Description("设置或得到分页控件绑定数据表的主键")]publicstringPrimaryKey
{get{return_primaryKey;
}set{
_primaryKey=value;
}
}//设置或得到分页控件绑定的字段列表(默认为:*)///[Browsable(true), Category("UcPageControlByCode"), Description("设置或得到分页控件绑定的字段列表(默认为:*)")]publicstringQueryFieldList
{get{return_queryFieldList;
}set{
_queryFieldList=value;
}
}#endregion#region构造函数//分页控件(使用代码实现,不用存储过程)///publicUcPageControlByCode()
{
InitializeComponent();
}#endregion#region分页实现相关代码#regionvoid SetUcPageControlPars(string connStr, string whereStatement, string tbName, string orderField, string primaryKeyName, string fieldList):给UcPageControlByCode控件传递必需参数//给UcPageControlByCode控件传递必需参数//连接字符串///MsSql Where语句///数据表名或视力名///排序字段///主键值///字段列表(默认为:*)publicvoidSetUcPageControlPars(stringconnStr,stringwhereStatement,stringtbName
,stringorderField,stringprimaryKeyName,stringfieldList)
{if(string.IsNullOrEmpty(connStr.Trim()))
{
DialogHelper.ShowErrorMsg("温馨提示:\n无可用的数据库连接!");return;
}else{this.SqlConnString=connStr;
}this.SqlWhereStatement=whereStatement;this.TableName=tbName;this.OrderField=orderField;this.PrimaryKey=primaryKeyName;if(!string.IsNullOrEmpty(fieldList.Trim()))
{this.QueryFieldList=fieldList;
}
}#endregion#regionDataTable InitializePageControl():初始化UcPageControlByCode//绑定UcPageControlByCode(并返回包含当前页的DataTable)//DataTablepublicDataTable BindPageControl()
{
recordCount=GetTotalRecordCount();//获取总记录数pageCount=recordCount/PageSize-ModPage();//保存总页数(减去ModPage()函数防止SQL语句执行时溢出查询范围,可以用存储过程分页算法来理解这句)pageIndex=0;//保存一个为0的页面索引值到pageIndexlblPageCount.Text=(recordCount/PageSize+OverPage()).ToString();//显示lblpageCount、lblrecCount的状态lblRecCount.Text=recordCount.ToString();if(recordCount<=PageSize)
{
txtGoToPage.Enabled=false;
}else{
txtGoToPage.Enabled=true;
}returnTDataBind();
}#endregion