专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

DevExpress中如何实现GridControl的分页功能_PHP基础

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 4:16:08       共计:3567 浏览

DevExpress中如何实现GridControl的分页功能?

加入两个组件:BindingNavigator和BindingSource

技术分享

技术分享

代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Text;

using System.Linq;

using System.Threading.Tasks;

using System.Windows.Forms;

using DevExpress.XtraEditors;

using DZAMS.DBUtility;

namespace DZAMS.Demo

{

public partial class GridPage_Frm : DevExpress.XtraEditors.XtraForm

{

public DataTable dt = new DataTable();

StoreProcedure sp;

private int pageSize = 10; //每页显示行数

private int nMax = 0; //总记录数

private int pageCount = 0; //页数=总记录数/每页显示行数

private int pageCurrent = 0; //当前页号

private DataSet ds = new DataSet();

private DataTable dtInfo = new DataTable();

public GridPage_Frm()

{

InitializeComponent();

}

private void GridPage_Frm_Load(object sender, EventArgs e)

{

string strQuery = string.Format("SELECT Id, UserCode, UserName, RoleName, Ip, Mac, LoginTime FROM DZ_LoginLog");

dt = SqlHelper.ExecuteDataset(SqlHelper.conn, CommandType.Text, strQuery.ToString()).Tables[0];

gridControl1.DataSource = dt;

string strConn = "SERVER=(local);DATABASE=DZ;UID=sa;PWD=XXXX"; //数据库连接字符串

SqlConnection conn = new SqlConnection(strConn);

conn.Open();

string strSql = "SELECT count(*) as num FROM DZ_LoginLog";

SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);

sda.Fill(ds, "ds");

conn.Close();

nMax = Convert.ToInt32(ds.Tables[0].Rows[0]["num"].ToString());

lblTotalCount.Text = nMax.ToString();

lblPageSize.Text = pageSize.ToString();

sp = new StoreProcedure("Pr_Monitor_Pagination", strConn);

dtInfo = sp.ExecuteDataTable("DZ_LoginLog", "Id", "Id desc", pageCurrent++, pageSize);

InitDataSet();

}

private void InitDataSet()

{

pageCount = (nMax / pageSize); //计算出总页数

if ((nMax % pageSize) > 0) pageCount++;

pageCurrent = 1; //当前页数从1開始

LoadData();

}

private void LoadData()

{

lblPageCount.Text = "/"+pageCount.ToString();

txtCurrentPage.Text = Convert.ToString(pageCurrent);

this.bdsInfo.DataSource = dtInfo;

this.bdnInfo.BindingSource = bdsInfo;

this.gridControl1.DataSource = bdsInfo;

}

private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

{

if (e.ClickedItem.Text == "导出当前页")

{

SaveFileDialog saveFileDialog = new SaveFileDialog();

saveFileDialog.Title = "导出Excel";

saveFileDialog.Filter = "Excel文件(*.xls)|*.xls";

DialogResult dialogResult = saveFileDialog.ShowDialog(this);

if (dialogResult == DialogResult.OK)

{

DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions();

gridControl1.ExportToXls(saveFileDialog.FileName, options);

// gridControl1.ExportToExcelOld(saveFileDialog.FileName);

DevExpress.XtraEditors.XtraMessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

}

if (e.ClickedItem.Text == "关闭")

{

this.Close();

}

if (e.ClickedItem.Text == "首页")

{

pageCurrent--;

if (pageCurrent <= 0)

{

MessageBox.Show("已经是首页。请点击“下一页”查看!");

return;

}

else

{

pageCurrent = 1;

dtInfo = sp.ExecuteDataTable("DZ_LoginLog", "Id", "Id desc", pageCurrent, pageSize);

}

}

if (e.ClickedItem.Text == "上一页")

{

pageCurrent--;

if (pageCurrent <= 0)

{

MessageBox.Show("已经是第一页,请点击“下一页”查看!");

return;

}

else

{

dtInfo = sp.ExecuteDataTable("DZ_LoginLog", "Id", "Id desc", pageCurrent, pageSize);

}

}

if (e.ClickedItem.Text == "下一页")

{

pageCurrent++;

if (pageCurrent > pageCount)

{

MessageBox.Show("已经是最后一页。请点击“上一页”查看。");

return;

}

else

{

dtInfo = sp.ExecuteDataTable("DZ_LoginLog", "Id", "Id desc", pageCurrent, pageSize);

}

}

if (e.ClickedItem.Text == "尾页")

{

pageCurrent++;

if (pageCurrent > pageCount)

{

MessageBox.Show("已经是尾页,请点击“上一页”查看。");

return;

}

else

{

pageCurrent = pageCount;

dtInfo = sp.ExecuteDataTable("DZ_LoginLog", "Id", "Id desc", pageCount, pageSize);

}

}

LoadData();

}

}

}

StoreProcedure类:

public class StoreProcedure

{

// 存储过程名称。

private string _name;

// 数据库连接字符串。

private string _conStr;

// 构造函数

// sprocName: 存储过程名称;

// conStr: 数据库连接字符串。

public StoreProcedure(string sprocName, string conStr)

{

_conStr = conStr;

_name = sprocName;

}

// 运行存储过程,不返回值。

// paraValues: 參数值列表。

// return: void

public void ExecuteNoQuery(params object[] paraValues)

{

using (SqlConnection con = new SqlConnection(_conStr))

{

SqlCommand comm = new SqlCommand(_name, con);

comm.CommandType = CommandType.StoredProcedure;

AddInParaValues(comm, paraValues);

con.Open();

comm.ExecuteNonQuery();

con.Close();

}

}

// 运行存储过程返回一个表。

// paraValues: 參数值列表。

// return: DataTable

public DataTable ExecuteDataTable(params object[] paraValues)

{

SqlCommand comm = new SqlCommand(_name, new SqlConnection(_conStr));

comm.CommandType = CommandType.StoredProcedure;

AddInParaValues(comm, paraValues);

SqlDataAdapter sda = new SqlDataAdapter(comm);

DataTable dt = new DataTable();

sda.Fill(dt);

return dt;

}

// 运行存储过程。返回SqlDataReader对象。

// 在SqlDataReader对象关闭的同一时候。数据库连接自己主动关闭。

// paraValues: 要传递给给存储过程的參数值类表。

// return: SqlDataReader

public SqlDataReader ExecuteDataReader(params object[] paraValues)

{

SqlConnection con = new SqlConnection(_conStr);

SqlCommand comm = new SqlCommand(_name, con);

comm.CommandType = CommandType.StoredProcedure;

AddInParaValues(comm, paraValues);

con.Open();

return comm.ExecuteReader(CommandBehavior.CloseConnection);

}

// 获取存储过程的參数列表。

private ArrayList GetParas()

{

SqlCommand comm = new SqlCommand("dbo.sp_sproc_columns_90",

new SqlConnection(_conStr));

comm.CommandType = CommandType.StoredProcedure;

comm.Parameters.AddWithValue("@procedure_name", (object)_name);

SqlDataAdapter sda = new SqlDataAdapter(comm);

DataTable dt = new DataTable();

sda.Fill(dt);

ArrayList al = new ArrayList();

for (int i = 0; i < dt.Rows.Count; i++)

{

al.Add(dt.Rows[i][3].ToString());

}

return al;

}

// 为 SqlCommand 加入參数及赋值。

private void AddInParaValues(SqlCommand comm, params object[] paraValues)

{

comm.Parameters.Add(new SqlParameter("@RETURN_VALUE", SqlDbType.Int));

comm.Parameters["@RETURN_VALUE"].Direction =

ParameterDirection.ReturnValue;

if (paraValues != null)

{

ArrayList al = GetParas();

for (int i = 0; i < paraValues.Length; i++)

{

comm.Parameters.AddWithValue(al[i + 1].ToString(),

paraValues[i]);

}

}

}

}

存储过程:

ALTER procedure [dbo].[Pr_Monitor_Pagination]

-- ============================================= == Paging == =============================================

--Author: Lee

--Create date: 2010\06\11

--Parameter:

-- 1.Tables :The Name Of Table or view

-- 2.PrimaryKey :Primary Key

-- 3.Sort :Ordering Statement,Without Order By, For Example:NewsID Desc,OrderRows Asc

-- 4.CurrentPage :The Page Number Of Current page

-- 5.PageSize :The Size Of One Page‘s Group

-- 6.Fields :The Field Of You Needed

-- 7.Filter :Where Condition,Without Where

-- 8.Group :Group Condition。Without Group By

-- 9.GetCount :Return The Number Of All, Not Zero

--Updates:

-- 2010\06\09 Create Procedure.

-- ========================================================================================================

@Tables varchar(600),

@PrimaryKey varchar(100),

@Sort varchar(200)=null,

@CurrentPage bigint=1,

@PageSize bigint=10,

@Fields varchar(1000)=‘*‘,

@Filter varchar(1000)=null,

@Group varchar(1000)=null,

@GetCount bit=0

as

if(@GetCount=0)

begin

/*Ordering Of Default */

if @Sort is null or @Sort=‘‘

set @Sort=@PrimaryKey

declare @SortTable varchar(100)

declare @SortName varchar(100)

declare @strSortColumn varchar(200)

declare @operator char(2)

declare @type varchar(100)

declare @prec int

/*Setting Condition Of Ordering*/

if charindex(‘desc‘,@Sort)>0

begin

set @strSortColumn=replace(@Sort,‘desc‘,‘‘)

set @operator=‘<=‘

end

else

begin

if charindex(‘asc‘,@Sort)=0

set @strSortColumn=replace(@Sort,‘asc‘,‘‘)

set @operator=‘>=‘

end

if charindex(‘.‘,@strSortColumn)>0

begin

set @SortTable=substring(@strSortColumn,0,charindex(‘.‘,@strSortColumn))

set @SortName=substring(@strSortColumn,charindex(‘.‘,@strSortColumn)+1,len(@strSortColumn))

end

else

begin

set @SortTable=@Tables

set @SortName=@strSortColumn

end

select @type=t.name,@prec=c.prec from sysobjects o join syscolumns c on o.id=c.id join systypes t on c.xusertype=t.xusertype where o.name=@SortTable and c.name=@SortName

if charindex(‘char‘,@type)>0

set @type=@type+‘(‘+cast(@prec as varchar)+‘)‘

declare @strPageSize varchar(50)

declare @strStartRow varchar(50)

declare @strFilter varchar(1000)

declare @strSimpleFilter varchar(1000)

declare @strGroup varchar(1000)

/*CurrentPage Of Default*/

if @CurrentPage<1

set @CurrentPage=1

/*Setting Paging param*/

set @strPageSize=cast(@PageSize as varchar(50))

set @strStartRow=cast(((@CurrentPage-1)*@PageSize+1) as varchar(50))

/*Condition Of Filter And Group*/

if @Filter is not null and @Filter!=‘‘

begin

set @strFilter=‘ where ‘+@Filter+‘ ‘

set @strSimpleFilter=‘ and ‘+@Filter +‘ ‘

end

else

begin

set @strSimpleFilter=‘‘

set @strFilter=‘‘

end

if @Group is not null and @Group!=‘‘

set @strGroup=‘ group by ‘+@Group+‘ ‘

else

set @strGroup=‘‘

exec(‘ declare @SortColumn ‘+ @type + ‘ set RowCount ‘ + @strStartRow+ ‘ select @SortColumn=‘ + @strSortColumn + ‘ from ‘ + @Tables+ @strFilter + ‘ ‘ + @strGroup + ‘ Order by ‘ + @Sort+ ‘ set rowcount ‘ + @strPageSize + ‘ select ‘ + @Fields + ‘ from ‘ + @Tables + ‘ where ‘ + @strSortColumn + @operator+ ‘@SortColumn ‘ + @strSimpleFilter + ‘ ‘ + @strGroup + ‘ Order by ‘ + @Sort + ‘ ‘)

end

else

begin

declare @strSQL varchar(5000)

if @Filter !=‘‘

set @strSQL = ‘select count(‘ + @PrimaryKey + ‘) as Total from [‘ + @Tables + ‘] where ‘ + @Filter

else

set @strSQL = ‘select count(‘ + @PrimaryKey + ‘) as Total from [‘ + @Tables + ‘]‘

exec(@strSQL)

end

效果:

技术分享

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:CMD命令如何进入和退出一个文件夹_java | ·下一条:阶乘函数的排序_java

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有