社区
C#
帖子详情
Grid按列排序
伴老思源
2005-11-04 04:03:43
请问各位大虾,当点击Grid的Header时进行该列的排序,请问有没有什么好方法,
可以用哪个事件?
Grid的第一列绑定一个Checkbox,可以多选,进行删除,要求可以进行翻页,但所选的数据不能丢失,
有没有什么好方法?
以上任一条问题解决后100分
...全文
359
19
打赏
收藏
Grid按列排序
请问各位大虾,当点击Grid的Header时进行该列的排序,请问有没有什么好方法, 可以用哪个事件? Grid的第一列绑定一个Checkbox,可以多选,进行删除,要求可以进行翻页,但所选的数据不能丢失, 有没有什么好方法? 以上任一条问题解决后100分
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
伴老思源
2005-12-23
打赏
举报
回复
有没有js实现的代码
jxufewbt
2005-11-07
打赏
举报
回复
1、http://dotnet.aspx.cc/ShowDetail.aspx?id=00C78024-5C08-4F3F-BCA8-AB3C0B330A12
2、http://dotnet.aspx.cc/ShowDetail.aspx?id=F43AF9A5-2C2E-4AA6-E976-21E9569F5A8A
伴老思源
2005-11-07
打赏
举报
回复
兄弟们,有没有其他的办法,或实例,
曲滨_銘龘鶽
2005-11-04
打赏
举报
回复
作批量一直就是比较郁闷的事情(B/S 更严重)
如果分页比较多的话如 5000 页的巨型数据,
即使是放个隐藏控件什么的保存着一直以来的动作处理,起来也比较郁闷
缺点
存在并发冲突的问题
如果用户A,B同时进行这个操作
A 用户选择5 条在第一页 分别是 id=1,2,3,4,5 的记录
B 用户上来操作删除 id = 3,4,5 的记录
当 A在其他页也选择了相删除的条目确认删除的时候,打出的票据上却少了三条?
你如果要解决这种尴尬还要提示用户你的 1,2,3 号记录已经被其他人删除
提示 “重新选择”或“取消”
如这时候还有个用户 C 更改了A选择的id=5的录,但如果被人更改后的记录也许就不需要删除
了 还需要提示 A, 5 号记录已经被更改,你是就提交4条还是,全不提交
而且数据比较多的时候用户需要记忆以前选过什么!
最好的解决办法是
不如在分页的Grid上面放一个Grid列表,来记忆都那些曾经被他选择过,这样用户还可以看到
一共多少记录被选了,你代码也好写,到上面的grid 或 什么来取得以前选过的记录,而且
这种批量的最后都要效验,那个记录被其他人删除或更改的
15916814
2005-11-04
打赏
举报
回复
写个方法,记下你选中的checkbox,就不会出现翻页后丢失的问题```
Comer
2005-11-04
打赏
举报
回复
mark
singlepine
2005-11-04
打赏
举报
回复
http://singlepine.cnblogs.com/articles/266538.html
singlepine
2005-11-04
打赏
举报
回复
http://singlepine.cnblogs.com/category/37474.html
伴老思源
2005-11-04
打赏
举报
回复
感谢:cansum396(沉觉不醒)兄
伴老思源
2005-11-04
打赏
举报
回复
那么有没有高手能提供段js呢?(50分)
mobydick
2005-11-04
打赏
举报
回复
用vs2005吧,按列排序和绑定控件很容易。
如果不喜欢postback的话,就只有写js代码了。
yangchh
2005-11-04
打赏
举报
回复
up
petereggplant
2005-11-04
打赏
举报
回复
这个倒无所谓的,PageIndex发生变化的时候对该版面显示的数据进行遍历,然后更新
cansum396
2005-11-04
打赏
举报
回复
第二个问题:
http://dotnet.aspx.cc/ShowDetail.aspx?id=F43AF9A5-2C2E-4AA6-E976-21E9569F5A8A
伴老思源
2005-11-04
打赏
举报
回复
不好意思我没说清楚,分页没有自定义分页,而是用它自带的PageIndex
petereggplant
2005-11-04
打赏
举报
回复
问题1
若DataGrid支持排序,则一个可排序列的头将不仅是普通的文本,而是由HTML元素组成,通常是一个锚标签。利用该列的DHTML行为你可知道如何获取其内的文本。它将用于获取点击单元格的内在文本,并自动移走任何HTML格式。
现在让你知道如何建立客户端排序能力。在Dave Massy的专栏中证明并提供了一个强大的组件-sort.htc行为。该行为截取在一表格头的任意点击并基于从列中找到的值进行排序。该行为跟踪上次点击的列,且当你再次点击此列时,则其顺序将后反过来。此外,一个图开将添加到列头来指示排序列和它的排序方向。Figure 8显示一个使用此行为的DataGrid.图形为字体为Wingdings的一个"3"(动态建立的SPAN标签)。
sort.htc行为捕获OnContentReady事件,进行一些初始化工作,且为表格头中每个单元附加一个处理到其OnClick事件中。当表格在客户端设置之后,所有单元具有一个空的图形且其顺序是默认值。当用户点击来对一特定列排序时,则该列的内容将排序。注意基于客户端的排序将是纯文本的。若你要基于列排序,请使用DataGrid控制提供的默认服务器端排序机制。仅当前显示的记录集被排序sort.htc行为在服务器端由一个名为EnableClientSort属性来控制,它几乎等同于EnableColumnDrag且允许通过添加sort.htl到行为式样中来被允许,此两种行为(behavior)可在一起很好地运行。
若你仅满足于客户端排序,则可说是完全地完成了。该行为(behavior)排序表格中的内容且在下次刷新时该排序将失效。客户端和服务器端排序可在相同的表格上被支持。当用户一个服务器端排序的列上点击时(见Figure 8中的ID列),页面将被刷新且触发一个服务器端事件到DataGrid。当用于点击任何其它列时,排序将在客户端上发生。此版本的sort.htc组件支持在所有列上排序。你可改进此组件以便使它接受仅在某些列上支持排序.
是否有办法让客户端排序保持?当然可以,你可建立第二个隐藏字段,且用sort.htc组件将在服务器上用于排序的表达式赋给隐藏字段。咋一看好象是一个不错的主意,其实并非如此
问题在于在客户端你并不知道在屏幕上显示的列的数据的任何信息。你仅可知道的信息就是保存在隐藏字段中点击列的头文本或索引信息以及指示排序方面的标志信息(升序或降序)。在服务器端,该信息很难把握。首先我尝试以基于文本的方式来排序数据源。捆绑到DataGrid的数据源可为实施了IEnumerable接口的任意对象。除非你限制为一些通用的ADO.NET对象。然而最大的挑战仍是排序。若想提供给用户与在客户端产生的信息相同的行顺序,你必须以文本方式对数据源中所有数据对象进行排序。但是数据源是一个丰富类型的对象的集合,如日期,串,以及可能格式定义的数值。要确保你获取客户端相同的顺序,你必须首先转换任意对象为其标记的对应者。
最值行探讨的方法就是在Render方法中,在生成HTML行之后进行排序。我并没有这样做,但我敢打赌,使用正规表达式的一些帮助和一个定制的比较类,你可对代表一个表格的HTML串进行排序。
要解决此问题,我选择了其它方法。我使用隐藏字段来跟踪用户上次使用的排序表达式。该信息并不在服务器端被使用。在客户端,行为读取隐藏字段的内容并相应重新初始化表格。下面几行(在Render方法中)使得此方法成为可能:
if (EnableClientSort)
{
string buf = "";
buf = Page.Request[HiddenFieldForSorting].ToString();
Page.RegisterHiddenField(HiddenFieldForSorting, buf);
}
当行为被初始化时,在客户端除了以默认方式排序外,表格信息被部分显示。在此初始化阶段,行为将改变表格的结构并刷新。但这一系列操作会产生令人讨厌的闪烁。 为了解决这个问题,将为 DataGrid 而创建的表格包在
标签中并将其 visibility 设置为 hidden。 这样一来当页面首次显示时,浏览器将为表格预留空间但并不显示。当行为完成其排序时,它将检索在DHTML对象模型中的
标签并打开其visibility。该行为将通过一个 明确的ID来标识该
petereggplant
2005-11-04
打赏
举报
回复
问题2,定义一个数组纪录被选中的索引(绝对的),或者是两个数组纪录索引和页数
然后每次CurrentPage发生变化的时候对该页面进行一下遍历,数组中有的,把checkbox选中
或者数据源可以多添加一个column,显示的时候把他的visible设置为false,然后把选中的checkbox的行的那个隐藏的column设置特定的值,然后遍历的时候就根据这一列的值判断checkbox是被选中还是不被选中.
以上两个方法在你翻页的时候对显示的行进行遍历是必要的
伴老思源
2005-11-04
打赏
举报
回复
望大家踊跃发言,顶者有分!
若解决,周一结贴
伴老思源
2005-11-04
打赏
举报
回复
第一条问题,只要能激发个事件就有戏,js或cs都行
ExtJS 4.2.0
ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。 功能丰富,无人能出其右。 无论是界面之美,还是功能之强,ext的表格控件都高居榜首。 单选行,多选行,高亮显示选中的行,拖拽改变列宽度,
按列
排序
,这些基本功能ExtJS轻量级实现。 自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。 再加上可编辑
grid
,添加新行,删除一或多行,提示多行数据,拖拽改变
grid
大小,
grid
之间拖拽一或多行,甚至可以在tree和
grid
之间进行拖拽,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件里实现了。
python二维列表
按列
排序
_如何
按列
对二维列表
排序
我怎样才能去掉这些if语句,并通过使用for循环而不使用numpy来使它更简单def sortColumns(
grid
):if
grid
[0][0] >
grid
[1][0]:
grid
[0][0],
grid
[1][0]=
grid
[1][0],
grid
[0][0]if
grid
[2][0] <
grid
[1][0]:
grid
[2][0],
grid
[1][0]=
grid
[1][0],g...
【ExtJS实践】之七 :禁止
Grid
、Tree
grid
列
排序
和列菜单
Ext的
Grid
和Tree
grid
默认提供列菜单的功能,在列菜单中可以进行
排序
以及控制列显示状态。 在实际项目中,往往有些列是不需要用户看到的,因此就必须屏蔽列菜单的功能。 1、屏蔽
Grid
,包括Editor
Grid
的列菜单 方法: 在
Grid
Panel应用的ColumnModel中为每一列指定这个配置项。 menuDisabled : true 2、屏蔽Tree...
ag-
grid
表头添加
排序
与取消
排序
1.组件添加 enableSorting 属性 2.控制列不
排序
,在列定义添加 supressSorting 属性
二、UI-
Grid
排序
原文:102Sorting UI-
Grid
默认允许
排序
。可以在
grid
options 中设置enableSorting 标签来 启用和关闭它。 注意:可以通过访问列菜单来
排序
列。如果希望菜单有下拉的效果必须引入ngAnimate,但在项目中不是必须引入的。 在columnDefs中可以通过设置 enableSorting: false 来禁用
排序
。可以看下面例子中的最后一列。可以通过shi
C#
110,566
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章