GridView控件中的"选择"操作纯粹是一个UI概念,它的SelectedIndex属性与表格的可视数据行中的当前被选中的行的索引相对应。如果你启用了表格的分页和排序功能,在执行分页或排序操作之后,SelectedIndex的值仍然不会变化,因此在执行这些操作之后,一个新数据行被选中了。在某些环境下,保留对指定数据行的选中更好,即使该行在表格的当前页面中并不可视。下面的例子演示了如何在排序和分页操作之后仍然保留当前选中的数据行。
| Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Dim Row As GridViewRow Dim SelectedValue As String = ViewState("SelectedValue") If SelectedValue Is Nothing Then Return End If ' 检测选择的行是哪个并重新选中它 For Each Row In GridView1.Rows Dim KeyValue As String = GridView1.DataKeys(Row.RowIndex).Value If (KeyValue = SelectedValue) Then GridView1.SelectedIndex = Row.RowIndex End If Next End Sub Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) ' 保存选中行的索引 If (Not GridView1.SelectedIndex = -1) Then ViewState("SelectedValue") = GridView1.SelectedValue End If End Sub Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) ' 重置选中索引 GridView1.SelectedIndex = -1 End Sub Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) ' 重置选择索引 GridView1.SelectedIndex = -1 End Sub |
GridView和DetailsView还支持一种用于分页和排序的特殊模式,它利用客户端向服务器的回调(callback)操作来获取新页面的数据或最近排序过的数据。要激活这个特性,必须把EnableSortingAndPagingCallbacks属性设置为真。请注意,当我们执行分页或排序操作的时候,页面不需要发回(postback)以检索新值(尽管执行了客户端脚本向服务器的回调操作)。当GridView或DetailsView包含模板字段的时候是不支持这个特性的。当这个特性被激活的时候,不支持在CommandField(命令字段)中显示"选择"按钮。
| <asp:GridView AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="au_id" DataSourceID="SqlDataSource1" EnableSortingAndPagingCallbacks="True" ID="GridView1" runat="server"> …… </asp:GridView> |
尽管GridView、DetailsView和FormView为分页器(pager)UI提供了默认的显示方式,你仍然可以通过设置PagerTemplate属性来自定义分页器的显示。在这个模板中,你可以放置按钮控件,并把它的CommandName属性设置为Page,把它的属性设置为First、Prev、Next、Last或<number>,其中<number>是特定页面的索引值。下面的例子演示了GridView和DetailsView控件定义的PagerTemplate。
| <PagerTemplate> <asp:LinkButton CommandName="Page" CommandArgument="First" ID="LinkButton1" runat="server" Style="color: white"><< First</asp:LinkButton> <asp:LinkButton CommandName="Page" CommandArgument="Prev" ID="LinkButton2" runat="server" Style="color: white">< Prev</asp:LinkButton> [Records <%= GridView1.PageIndex * GridView1.PageSize %> - <%= GridView1.PageIndex * GridView1.PageSize + GridView1.PageSize - 1 %>] <asp:LinkButton CommandName="Page" CommandArgument="Next" ID="LinkButton3" runat="server" Style="color: white">Next ></asp:LinkButton> <asp:LinkButton CommandName="Page" CommandArgument="Last" ID="LinkButton4" runat="server" Style="color: white">Last >></asp:LinkButton> </PagerTemplate> |
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- SQL Server 数据处理专题 (1843篇文章)
- DB2中的数据处理 (465篇文章)
- 数据库处理专题 (8526篇文章)
- .NET移动与嵌入式技术 (5880篇文章)
- .NET开发手册 (5585篇文章)
- ASP.NET教程 (8343篇文章)
- ASP.NET应用篇 (2591篇文章)
- ASP.NET与数据库 (275篇文章)
- asp.net 实现购物车详细代码 (14312次浏览)
- ASP.NET2.0轻松搞定统计图表 (651次浏览)
- 使用ASP.NET AJAX实现幻灯片效果 (604次浏览)
- ASP.NET如何存取 SQLServer数据库图片 (592次浏览)
- 如何制作Asp.Net界面模板 (582次浏览)
- ASP.NET中实现DataGrid数据排序 (580次浏览)
- 设计ASP.NET新闻管理系统 (424次浏览)
- ASP.NET 2.0加密Web.config 配置文件 (381次浏览)
- 网络编程ASP.NET的几个技巧 (374次浏览)
- ASP.NET的Request对象的属性介绍 (324次浏览)



