ASP.NET GridView 扩展 [客户端可排序/可拖动...] 第一部分






4.35/5 (8投票s)
对 ASP.NET GridView 控件的扩展,具有内置的客户端排序、列拖动、固定标题等功能。
引言
本文中的所有实现与我之前的文章几乎相同:客户端可排序 DataGird。我只是在下面讨论了一些实现上的差异。
GridView 差异
DataGrid
将其输出呈现为客户端上的简单 HTML 表格,而 GridView
控件则呈现一个包裹在 DIV
标签中的 HTML 表格。我解析并使这个自定义控件的最终输出比 MS 网格高度结构化,它包含一个由 DIV
包裹的 HTML 表格,其中包含 TBODY
、THEAD
和 TFOOT
元素。 DIV
用于为冗长的数据提供滚动,THEAD
映射到标题模板,TBODY
映射到实际的数据行,而 TFOOT
映射到网格的页脚。
当分页添加到 DataGrid
控件时,它会在生成的 HTML 表格的最后一行显示一个分页器,但是 GridView
在主表格的最后一行创建一个嵌套的 HTML 表格。
DataGrid
控件有一个未记录的、可覆盖的函数 CREATECOLUMNSET
,它返回一个包含 DataGrid
包含的列的 ArrayList
。
protected override ArrayList CreateColumnSet(PagedDataSource dataSource, bool useDataSource)
{
.
.
.
}
但是,GridView
控件有一个名为 CreateColumns
的不同函数,它返回一个 ICollection
对象。
protected override ICollection CreateColumns(PagedDataSource dataSource, bool useDataSource)
{
.
.
.
}
这些函数被这些自定义控件用于根据最后的拖放更新列顺序。这仅在将列拖动设置为 true 时才成立。对 GridView
和 DataGrid
做的最终更改是一个用于注册被新版本替换的隐藏控件的过时函数。
使用代码
您的 Web 应用程序中需要三个文件才能使此控件正常工作
- Jscript.js
- StyleSheet.css
- Dragdrop.htc
并且这些文件包含在可供下载的演示中。
您需要在您放置此网格的页面上提供对 Jscript.js 和 StyleSheet.css 文件的引用。您可以选择修改此控件的 Render
方法以使用 ASP.NET 2.0 中提供的以下方法动态添加这些文件。
Page.ClientScript.RegisterClientScriptInclude
您需要设置下面列出的一些属性才能获得固定标题、客户端排序等功能。
- 将
EnableClientSort
设置为true
以启用网格的客户端排序。 - 如果您希望在第一次加载时对网格进行排序,请将
InitialSort
设置为一个表达式。在回发期间,网格将保留并自动应用用户排序。InitialSort
的格式应如下所示:1,ascending 或 2,descending,其中数字代表要排序的列索引,而 ascending 和 descending 描述列的排序方向。 - 将
EnableColumnDrag
设置为true
以便能够在客户端拖动和排列列。 - 设置网格的
Boundary
以获得固定标题和自动滚动功能。Boundary
属性包含宽度和高度。 - 设置
DragColor
和Hitcolor
属性,这些颜色将在客户端拖动和放置列时使用。