本文英文原版:
http://aspnet.4guysfromrolla.com/articles/052202-1.2.aspx#postadlink
考察DataGrid控件: Part 4 (下)
在上半部分我们考察了前2步:将DataGrid控件的AllowSorting属性设置为True,并创建一个排序事件处理器.在本节我们看如何获取按指定排序的数据.
构建一个函数获取数据并排序
最理想的情况是我们构建某个函数,该函数根据传入的排序表达式(sort expression)来对记录排序.然后要么直接将这些数据绑定到DataGrid;要么返回一个DataReader对象,再将DataReader对象绑定到DataGrid.假定我们已经创建了这样的一个函数,我们叫它BindData,它接受一个排序表达式作为输入参数,返回排好序的数据并绑定到DataGrid。在排序事件处理器里包含该函数,如下:
Sub SortData(sender as Object, e as DataGridSortCommandEventArgs)
BindData(e.SortExpression)
End Sub
现在的问题是创建该函数!该函数的主体代码取决于我们使用的数据源以及如何排序.在本前面的示例里我们使用存储过程来获取最常见的10个FAQs.但在这里我不想修改该存储过程,而使用SQL语句,因此,BindData函数看起来应该像下面这样:
Sub BindData(sortExpr as String)
'1. Create a connection
Dim myConnection as New _
SqlConnection(ConfigurationSettings.AppSettings("connStr"))
'2. Create the command object, passing in the SQL string
Dim strSQL as String = "SELECT TOP 10 FAQID, F.Description, " & _
"F.ViewCount, F.FAQCategoryID, SubmittedByName, " & _
"SubmittedByEmail, DateEntered, CatName = C.Name " & _
"FROM tblFAQ F (nolock) " & _
"INNER JOIN tblFAQCategory C (nolock) ON " & _
" C.FAQCategoryID = F.FAQCategoryID " & _
"WHERE Approved=1 ORDER BY " & sortExpr
Dim myCommand as New SqlCommand(strSQL, myConnection)
'Set the datagrid's datasource to the datareader and databind
myConnection.Open()
dgPopularFAQs.DataSource = _
myCommand.ExecuteReader(CommandBehavior.CloseConnection)
dgPopularFAQs.DataBind()
End Sub
注意,在SQL查询的ORDER BY 子句我们用到了sortExp变量.这是因为表tblFAQ和表 tblFAQCategory有很多相同列名的列,当指定排序依据时我们必须根据别名或说明来排序,比如使用F.ViewCount DESC,这意味着BoundColumns里的SortExpressions相应地改成这个样子:
<asp:DataGrid runat="server" id="dgPopularFAQs"
AllowSorting="True"
OnSortCommand="SortResults">
...
<Columns>
...
<asp:BoundColumn DataField="ViewCount"
<b>SortExpression="F.ViewCount DESC" </b>
DataFormatString="{0:#,###}"
HeaderText="Views" ItemStyle-HorizontalAlign="Center" />
...
<asp:BoundColumn DataField="DateEntered"
SortExpression="DateEntered DESC"
HeaderText="Date Added"DataFormatString="{0:MM-dd-yyyy}"/>
</Columns>
</asp:datagrid>
最后,当页面首次登录时我们需要基于某个默认值来排序,在此我选择依ViewCount的降序来排. 在Page_Load事件处理器里我们需要调用BindData("F.ViewCount DESC")方法,当然仅限于首次登录。我们应该认识到,当用户在页面里选择某个特定的列来排序时(这将产生页面回传),我们就不应在Page_Load事件处理器里绑定数据了.
完整的代码和演示页面见http://aspnet.4guysfromrolla.com/demos/dgExample11.aspx
另外,关于使用存储过程来排序的情况请参阅文章《Dynamic ORDER BY Statements in Stored Procedures》(http://www.4guysfromrolla.com/webtech/010704-1.shtml)
结语:
对DataGrid的内容进行排序是很简单的,包含3个步骤:设置AllowSorting属性;创建一个排序事件处理器;创建一个方法来对数据动态的排序.
祝编程快乐!
分享到:
相关推荐
在Windows编程领域,DataGrid控件是一个非常关键的组件,特别是在使用VC++进行开发时。这个控件允许程序员创建和展示结构化的数据,通常与数据库交互,为用户提供一种直观的方式来查看和编辑表格形式的数据。本篇...
MFC DataGrid 控件用法详解 MFC 中的 DataGrid 控件是一个非常实用的控件,用于显示数据,它提供了很多实用的功能,例如显示查询结果、控制显示、格式化数据等。在这里,我们将详细介绍 MFC DataGrid 控件的用法,...
VB中的DataGrid控件是一个非常实用的工具,用于在用户界面中展示和操作数据库中的数据。它呈现数据的方式类似于电子表格,提供了灵活的功能,如编辑、排序和格式化。以下是对DataGrid控件的详细说明: 1. **...
在VB(Visual Basic)编程环境中,`DataGrid`控件是一个非常重要的组件,它用于显示数据源中的数据,如数据库、数组或记录集。`DataGrid`控件为用户提供了一种交互式的表格形式,可以进行浏览、编辑和操作数据。在本...
### VC++中DataGrid控件的使用 #### 一、引言 Microsoft ADODataControl 控件是 ActiveX 控件中用于访问数据库的关键组件。它利用 Microsoft ActiveX 数据对象 (ADO) 快速建立起数据绑定 (Data Binding) 控件与...
"Datagrid 控件"是这样一个控件,常用于显示和操作数据表格式的信息,如数据库中的记录。它允许用户查看、排序和编辑数据,是Windows应用程序开发中常见的组件。 在Windows编程领域,控件通常是通过动态链接库(DLL...
Windows窗体DataGrid控件是NET 1.0/1.1推出的控件,在VS2005中亦可以继续使用,虽然它在功效方面不如NET 2.0新增的控件DataGridView,但它仍有用武之处,特别是对于已完成的项目中使用了该组件时,没有必要更换它,...
默认情况下,DataGrid控件会根据数据源中的数据类型自动格式化单元格。但有时,我们可能需要自定义显示格式,比如日期、货币或百分比等。 要设置单元格的数据显示格式,我们可以使用以下几种方法: 1. **使用...
在.NET框架中,DataGrid控件是一个非常重要的组件,它被广泛用于展示和操作数据集。这个控件允许用户在Windows Forms应用程序中显示表格形式的数据,并且提供了多种交互功能,如排序、选择和编辑。本篇文章将深入...
4. **定制列显示**:DataGrid控件会自动根据数据源的结构创建列,但我们可以自定义列的显示方式,例如改变列的宽度、数据格式、是否可编辑等,通过设置Column对象的相关属性。 5. **处理用户输入**:DataGrid控件的...
在C# WPF开发中,DataGrid控件是用于展示数据集合的重要组件,它提供了丰富的功能,如排序、分页、编辑等。本教程将详细讲解如何利用DataGrid实现三级联动的效果,即在一个DataGrid中更改某一项时,关联的其他两个...
在本主题中,“基于datagrid控件的增删改查及分页实现”是一个常见的需求,特别是在开发数据密集型的Web应用时。下面将详细介绍这个主题中的相关知识点。 1. Flex DataGrid 控件: DataGrid是Flex中一个强大的组件...
在Microsoft Visual C++ (VC++) 开发环境中,ADO(ActiveX Data Objects)和DataGrid控件是用于数据库操作的强大工具。本教程将详细介绍如何利用它们实现对数据库的遍历、修改、删除和添加功能。 首先,ADO是微软...
本文将深入讲解如何利用博图WinCC V16中的ADODB组件和DataGrid控件来显示来自SQL Server的数据。 ADODB(ActiveX Data Objects Database)是微软提供的一个数据库访问接口,支持多种数据库,包括SQL Server。在...
在IT行业中,自定义控件的开发是一项重要的技能,尤其是对于C++程序员来说,能够创建自己的数据网格(datagrid)控件意味着可以灵活地定制界面,满足特定项目的需求。标题中的"C++自定义的datagrid控件"就是这样一个...
ASP.NET中的DataGrid控件是开发Web应用程序时用于展示数据的关键组件,特别是在处理与数据库相关的数据展示场景。熟练掌握DataGrid控件的应用技巧对于任何Web开发者来说都是至关重要的。 DataGrid控件允许以表格的...
在ASP.NET中,`DataGrid`控件是一个强大的数据展示工具,它允许开发者以表格的形式展示来自数据库或其他数据源的数据。本实例将深入讲解如何使用`DataGrid`控件连接数据库并展示数据。 1. **DataGrid控件简介** `...
在.NET框架中,Datagrid控件是一个非常重要的组件,尤其在ASP.NET环境下,它被广泛用于数据展示和交互。这个控件提供了丰富的功能,能够帮助开发者轻松地在网页上创建表格,显示数据库中的数据,并允许用户进行编辑...