求2.0 winform datagridview 分页程序,网上没有找到能[color=#FF0000]支持排序功能的分页程序[/color],请给个[color=#FF0000]能实际运行的例子[/color]

生活真美好 2008-07-31 09:41:25
求2.0 winform datagridview 分页程序,网上没有找到能支持排序功能的分页程序,请给个能实际运行的例子

是否能能够两种,支持在窗体中直接控制的,另一种为自己开发用户控件再调用的。
...全文
103 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
生活真美好 2008-07-31
  • 打赏
  • 举报
回复
排序一样可以在C#中实现,如用dataview的排序,
或通过原始表生成有序化的记录集,再转化为新表进行绑定。
生活真美好 2008-07-31
  • 打赏
  • 举报
回复
不想采用通用的存储过程的方法,效率低,不支持大数据,不支持特殊符号。
生活真美好 2008-07-31
  • 打赏
  • 举报
回复
想得到不同的实现方法进行比较,好确定哪种方式更适合我这边的系统开发。
如直接在窗体中加按钮和列表
或在用户控件中加按钮和列表,代码也封装在控件中
yagebu1983 2008-07-31
  • 打赏
  • 举报
回复
关于排序:
一般是通过传字段给存储过程来完成!!
生活真美好 2008-07-31
  • 打赏
  • 举报
回复
谢谢,有开发进度压力,近年又主要做WEBFORM,自己写全部代码时间长,且需要稳定的周期。

用存储过程的方法,我知道,但想找一个通用的方法解决不用数据库的分页方法

如一些基础档案,只有几十条或几百条记录,都做一个存储过程会比较麻烦,想在客户端用C#解决。
cychris 2008-07-31
  • 打赏
  • 举报
回复
学习+帮顶
cnming 2008-07-31
  • 打赏
  • 举报
回复
我使用过得分页有两种办法,1、通过查询语句进行分页,2、通过客户端控件进行分页。

1、就是通过存储过程等实现即可,主要思想是返回总记录数(可以计算出总页数),返回当前页的数据,例如


CREATE PROCEDURE [dbo].[pro_T_Common_CarryType_SelectPagedDynamic]
@PageSize int, --页面大小
@PageIndex int, --第几页
@TotalRowCount int OutPut, --总行数
@WhereCondition nvarchar(500) = NULL,
@OrderByExpression nvarchar(250) = NULL
AS

--SET NOCOUNT ON
--SET TRANSACTION ISOLATION LEVEL READ COMMITTED


DECLARE @SQL nvarchar(3250)

IF @PageIndex < 1
Begin
SET @PageIndex = 1
End

SET @SQL = 'select @TotalRowCount = count(*) from T_RateInfo'
IF @WhereCondition IS NOT NULL AND LEN(@WhereCondition) > 0
BEGIN
SET @SQL = @SQL + ' Where ' + @WhereCondition
End
EXEC sp_executesql @SQL,N'@TotalRowCount int OUTPUT',@TotalRowCount OUTPUT--计算总记录数


SET @SQL = 'with TempTBL as (SELECT ROW_NUMBER() OVER (ORDER BY '
IF @OrderByExpression IS NOT NULL AND LEN(@OrderByExpression) > 0
BEGIN
SET @SQL = @SQL + @OrderByExpression
END
Else
Begin
SET @SQL = @SQL + ' CarryType '
End
SET @SQL = @SQL + ' )AS Row, * from [dbo].[T_Common_CarryType]'

IF @WhereCondition IS NOT NULL AND LEN(@WhereCondition) > 0
BEGIN
SET @SQL = @SQL + ' Where ' + @WhereCondition
End
SET @SQL = @SQL +')
SELECT * FROM TempTBL where Row between ' + Ltrim(Rtrim(Str((@PageIndex-1)*@PageSize+1))) + ' and ' + Ltrim(Rtrim(Str((@PageIndex-1)*@PageSize+@PageSize)))

IF @OrderByExpression IS NOT NULL AND LEN(@OrderByExpression) > 0
BEGIN
SET @SQL = @SQL + ' ORDER BY ' + @OrderByExpression
END
Else
Begin
SET @SQL = @SQL + ' ORDER BY CarryType '
End

EXEC sp_executesql @SQL





2、通过客户端控件完成,好多控件都可以直接支持分页,只需要设置一下即可,以前有写过datagridview的分页,不过懒得去翻历史代码了,自己实现吧

cnming 2008-07-31
  • 打赏
  • 举报
回复
以前最有做过一次,看了一下文件,很难找出来了,做WebForm应该会很清楚如何分页,简单点的放上几个导航按钮就可以了。所有的数据都通过存储过程分页查询。

生活真美好 2008-07-31
  • 打赏
  • 举报
回复
谢谢提醒,有使用存储过程实现的完整例子吗。
vtebgd 2008-07-31
  • 打赏
  • 举报
回复
支持 cnming 的作法!
cnming 2008-07-31
  • 打赏
  • 举报
回复
存储过程效率是很高的,我的项目中客户端是无法直接操作数据表的,都通过存储过程处理。

110,529

社区成员

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

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

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