ASP.NET GridView 72般绝技攻略
什么是 ASP.NET GridView?
ASP.NET GridView 是 ASP.NET 网站开发中非常常用的控件之一。它可以方便地在网页上展示数据,并且提供了很多丰富的特性,如排序、分页、过滤、编辑等。
GridView 的基本用法
GridView 的基本用法非常简单,只需要在 ASP.NET 网页上添加一个 GridView 控件,并设置它的 DataSource 属性为一个数据源,就能显示数据了。
以下是基本用法的示例(假设我们有一个名为 DataSource 的数据源):
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource" />
<asp:SqlDataSource runat="server" ID="DataSource" ConnectionString="..." SelectCommand="SELECT * FROM MyTable" />
在上面的代码中,我们创建了一个 ID 为 MyGridView 的 GridView 控件,并将它的 DataSourceID 属性设置为 DataSource。同时,我们还创建了一个名为 DataSource 的 SqlDataSource 控件,并将它的 ConnectionString 属性设置为数据库连接字符串,将 SelectCommand 属性设置为 SQL 查询语句,使它可以获取数据。
GridView 的特性和绝技
除了基本用法之外,GridView 还有很多非常实用的特性和绝技,如以下 5 条:
1. 自定义列
GridView 的自定义列功能可以让我们自定义展示数据的方式。例如,我们想让表格中的某一列显示为链接,可以使用 HyperLinkField 控件来创建一个链接列,并设置其 DataNavigateUrlFields 和 DataTextField 属性为数据源中的字段名。
以下是自定义列的示例:
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="~/Details.aspx?ID={0}" DataTextField="Title" HeaderText="Title" />
<asp:BoundField DataField="Author" HeaderText="Author" />
<asp:BoundField DataField="Date" HeaderText="Date" />
</Columns>
</asp:GridView>
在上面的代码中,我们使用了 HyperLinkField 控件创建了一个链接列,并将 DataNavigateUrlFields 属性设置为 ID 字段,使它成为链接的参数,将 DataNavigateUrlFormatString 属性设置为链接的格式,将 DataTextField 属性设置为 Title 字段,使它成为链接的文本。
2. 分页
GridView 的分页功能可以让我们方便地浏览和管理大量数据。它提供了自动分页和手动分页两种模式,可以设置每页显示的数据行数,还可以自定义分页样式。
以下是自动分页的示例:
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource" AllowPaging="true" PageSize="10" />
<asp:SqlDataSource runat="server" ID="DataSource" ConnectionString="..." SelectCommand="SELECT * FROM MyTable" />
在上面的代码中,我们将 AllowPaging 属性设置为 true,使 GridView 启用分页功能。将 PageSize 属性设置为 10,表示每页显示 10 行数据。
3. 排序
GridView 的排序功能可以让我们方便地按照某一列的值来排序数据。它提供了自动排序和手动排序两种模式,可以设置默认排序列和排序方向,还可以自定义排序样式。
以下是自动排序的示例:
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource" AllowSorting="true" />
<asp:SqlDataSource runat="server" ID="DataSource" ConnectionString="..." SelectCommand="SELECT * FROM MyTable ORDER BY Title" />
在上面的代码中,我们将 AllowSorting 属性设置为 true,使 GridView 启用排序功能。并且在数据源的 SQL 查询语句中,使用了 ORDER BY 子句将数据按照 Title 列的值进行排序。
4. 过滤
GridView 的过滤功能可以让我们方便地筛选数据,只显示符合条件的数据。它提供了自动过滤和手动过滤两种模式,可以设置默认过滤列和过滤操作符,还可以自定义过滤样式。
以下是自动过滤的示例:
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource" AllowFiltering="true" />
<asp:SqlDataSource runat="server" ID="DataSource" ConnectionString="..." SelectCommand="SELECT * FROM MyTable" FilterExpression="Title LIKE '%{0}%'">
<FilterParameters>
<asp:ControlParameter Name="Title" ControlID="txtFilter" PropertyName="Text" />
</FilterParameters>
</asp:SqlDataSource>
<asp:TextBox runat="server" ID="txtFilter" />
在上面的代码中,我们将 AllowFiltering 属性设置为 true,使 GridView 启用过滤功能。并且在数据源的 FilterExpression 属性中,使用了 Title LIKE '%{0}%' 表达式来进行过滤。其中,{0} 表示过滤参数,由 FilterParameters 中的 ControlParameter 控件提供。在这里,ControlID 属性设置为 txtFilter,表示过滤参数由 ID 为 txtFilter 的文本框的 Text 属性提供。
5. 编辑
GridView 的编辑功能可以让我们方便地修改数据。它提供了自动和手动两种编辑模式,可以设置编辑列和编辑样式,还可以自定义编辑逻辑。
以下是自动编辑的示例:
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource" AutoGenerateEditButton="true" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Title" HeaderText="Title" />
<asp:BoundField DataField="Author" HeaderText="Author" />
<asp:BoundField DataField="Date" HeaderText="Date" />
</Columns>
</asp:GridView>
<asp:SqlDataSource runat="server" ID="DataSource" ConnectionString="..." SelectCommand="SELECT * FROM MyTable" UpdateCommand="UPDATE MyTable SET Title=@Title, Author=@Author, Date=@Date WHERE ID=@ID">
<UpdateParameters>
<asp:Parameter Name="Title" />
<asp:Parameter Name="Author" />
<asp:Parameter Name="Date" />
<asp:Parameter Name="ID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
在上面的代码中,我们将 AutoGenerateEditButton 属性设置为 true,使 GridView 自动生成一个编辑按钮。并且设置了 GridView 的列和数据源的 UpdateCommand 属性,以支持编辑操作。
示例说明
示例一:自定义列
假设我们有一个学生信息表格,其中包含学生的 ID、姓名和年龄。我们想让学生姓名在表格中显示为链接,点击后能够跳转到学生详情页面。
我们可以使用 HyperLinkField 控件来创建一个链接列,并将 DataNavigateUrlFields 和 DataTextField 属性分别设置为 ID 和姓名字段。
代码如下:
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:HyperLinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="~/Details.aspx?ID={0}" DataTextField="Name" HeaderText="Name" />
<asp:BoundField DataField="Age" HeaderText="Age" />
</Columns>
</asp:GridView>
<asp:SqlDataSource runat="server" ID="DataSource" ConnectionString="..." SelectCommand="SELECT * FROM Students" />
在上面的代码中,我们使用了 HyperLinkField 控件创建了一个链接列,将 DataNavigateUrlFields 属性设置为 ID 字段,使它成为链接的参数,将 DataNavigateUrlFormatString 属性设置为链接的格式,将 DataTextField 属性设置为 Name 字段,使它成为链接的文本。
示例二:手动编辑
假设我们有一个学生成绩表格,其中包含学生的姓名和数学成绩。我们想让用户能够修改学生的成绩。
我们可以将 GridView 的 AutoGenerateEditButton 属性设置为 false,手动创建一个 CommandField,将其 ShowEditButton 属性设置为 true,来创建一个编辑按钮。并且,我们需要手动设置 GridView 的编辑列和数据源的 UpdateCommand 属性,以支持编辑操作。
代码如下:
<asp:GridView runat="server" ID="MyGridView" DataSourceID="DataSource" AutoGenerateEditButton="false" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Math" HeaderText="Math" />
<asp:CommandField ShowEditButton="true" />
</Columns>
</asp:GridView>
<asp:SqlDataSource runat="server" ID="DataSource" ConnectionString="..." SelectCommand="SELECT * FROM Scores" UpdateCommand="UPDATE Scores SET Math=@Math WHERE Name=@Name">
<UpdateParameters>
<asp:Parameter Name="Math" Type="Int32" />
<asp:Parameter Name="Name" />
</UpdateParameters>
</asp:SqlDataSource>
在上面的代码中,我们将 AutoGenerateEditButton 属性设置为 false,手动创建了一个 CommandField,并将其 ShowEditButton 属性设置为 true,从而创建了一个编辑按钮。并且,我们设置了 GridView 的列和数据源的 UpdateCommand 属性,以支持编辑操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net gridview 72般绝技第1/2页 - Python技术站