打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
分享一个Winform下的分页控件
前两天有一个简单的C/S项目用到分页,因为是Winform下,没有现成的,自己也懒得写,就找了下,看到了ycmoon的一个控件
http://www.cnblogs.com/ycmoon/archive/2010/01/07/1640689.html
参考后,做了简化,只保留了分页的部分,主要是点击事件的Delegate,未做过多测试,有兴趣的朋友可以下载源码自行修改,如有好的建议,也可以给我反馈。3w@live.cn ,效果如下:
控件设计界面:
设计时:
运行时:
附带一个取分页数据的存储过程:
+ expand sourceview plaincopy to clipboardprint?
在WinForm项目中,需要设置控件的总记录数RecordCount (由分页存储过程计算得出),和翻页事件winFormPager1_PageIndexChanged 。
测试源码如下:
view plaincopy to clipboardprint?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace DemoPager
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
#region Members
//总记录数
public int RecordCount = 0;
private string strConn = @"Data Source=ap2\vegnet;Initial Catalog=Db_TonyPaging;Integrated Security=SSPI;";
//"Server=localhost;database=Db_TonyPaging;uid=sa;pwd=sa;";
private string strProcedure = "ZJF_CPP_GetPagedRecordFor2005_2008";
#endregion
#region Methods
/// <summary>
/// 绑定第Index页的数据
/// </summary>
/// <param name="Index"></param>
private void BindDataWithPage(int Index)
{
winFormPager1.PageIndex = Index;
//winFormPager1.PageSize = 10;; ;
dgvList.DataSource = GetData(strConn, strProcedure, Index, winFormPager1.PageSize);
//获取并设置总记录数
winFormPager1.RecordCount = RecordCount;
}
/// <summary>
/// 获取数据源
/// </summary>
/// <param name="conn"></param>
/// <param name="strProcedure"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
private DataTable GetData(string conn, string strProcedure, int pageIndex, int pageSize)
{
using (SqlConnection connection = new SqlConnection(conn))
{
SqlCommand command = new SqlCommand(strProcedure, connection);
command.CommandType = CommandType.StoredProcedure;//采用存储过程
//存储过程参数
command.Parameters.Add("@Table", SqlDbType.NVarChar, 1000).Value = "DepartDemo";
command.Parameters.Add("@TIndex", SqlDbType.NVarChar, 100).Value = "PKID";
command.Parameters.Add("@Column", SqlDbType.NVarChar, 2000).Value = "*";
command.Parameters.Add("@Sql", SqlDbType.NVarChar, 3000).Value = " 1=1 ";
command.Parameters.Add("@PageIndex", SqlDbType.Int, 8).Value = pageIndex.ToString();
command.Parameters.Add("@PageSize", SqlDbType.Int, 8).Value = pageSize.ToString();
command.Parameters.Add("@Sort", SqlDbType.NVarChar, 200).Value = " PKID desc";
//打开连接
if (connection.State != ConnectionState.Open) { connection.Open(); }
try
{
//填充数据
SqlDataAdapter da = new SqlDataAdapter(command);
DataSet ds = new DataSet();
da.Fill(ds);
//获取总记录数
RecordCount = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
//返回数据集
return ds.Tables[0];
}
catch (SqlException err)
{
MessageBox.Show(err.Message);
return null; ;
}
finally
{
connection.Close();
}
}
}
#endregion
#region Events
private void frmMain_Load(object sender, EventArgs e)
{
//不自动生成列
dgvList.AutoGenerateColumns = false;
//绑定数据
BindDataWithPage(1);
}
/// <summary>
/// 翻页事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void winFormPager1_PageIndexChanged(object sender, EventArgs e)
{
BindDataWithPage(winFormPager1.PageIndex);
}
#endregion
}
}
下载控件源码及演示程序(含SQL)
下载地址二
下载地址一
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Asp.net中DataGrid控件的自定义分页
web数据绑定控件之分页的两个方法
增加CCS1.1的Blog日志访问者记录功能 - Aero‘s Tech Space - ...
c# oracle 分页
分页存储过程一
动软使用心得
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服