65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.35/5 (8投票s)

2008年2月26日

CPOL

3分钟阅读

viewsIcon

81956

downloadIcon

920

对 ASP.NET GridView 控件的扩展,具有内置的客户端排序、列拖动、固定标题等功能。

引言

本文中的所有实现与我之前的文章几乎相同:客户端可排序 DataGird。我只是在下面讨论了一些实现上的差异。

GridView 差异

DataGrid 将其输出呈现为客户端上的简单 HTML 表格,而 GridView 控件则呈现一个包裹在 DIV 标签中的 HTML 表格。我解析并使这个自定义控件的最终输出比 MS 网格高度结构化,它包含一个由 DIV 包裹的 HTML 表格,其中包含 TBODYTHEADTFOOT 元素。 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 时才成立。对 GridViewDataGrid 做的最终更改是一个用于注册被新版本替换的隐藏控件的过时函数。

使用代码

您的 Web 应用程序中需要三个文件才能使此控件正常工作

  1. Jscript.js
  2. StyleSheet.css
  3. Dragdrop.htc

并且这些文件包含在可供下载的演示中。

您需要在您放置此网格的页面上提供对 Jscript.jsStyleSheet.css 文件的引用。您可以选择修改此控件的 Render 方法以使用 ASP.NET 2.0 中提供的以下方法动态添加这些文件。

Page.ClientScript.RegisterClientScriptInclude

您需要设置下面列出的一些属性才能获得固定标题、客户端排序等功能。

  • EnableClientSort 设置为 true 以启用网格的客户端排序。
  • 如果您希望在第一次加载时对网格进行排序,请将 InitialSort 设置为一个表达式。在回发期间,网格将保留并自动应用用户排序。 InitialSort 的格式应如下所示:1,ascending2,descending,其中数字代表要排序的列索引,而 ascendingdescending 描述列的排序方向。
  • EnableColumnDrag 设置为 true 以便能够在客户端拖动和排列列。
  • 设置网格的 Boundary 以获得固定标题和自动滚动功能。 Boundary 属性包含宽度和高度。
  • 设置 DragColorHitcolor 属性,这些颜色将在客户端拖动和放置列时使用。
© . All rights reserved.