ASP.NET 2.0数据处理之高级分…

2019-06-21 09:51:34来源: 阅读 ()

新老客户大回馈,云服务器低至5折

  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">&lt;&lt;;First</asp:LinkButton>
<asp:LinkButton;CommandName="Page";CommandArgument="Prev";ID="LinkButton2";runat="server";Style="color:;white">&lt;;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;&gt;</asp:LinkButton>
<asp:LinkButton;CommandName="Page";CommandArgument="Last";ID="LinkButton4";runat="server";Style="color:;white">Last;&gt;&gt;</asp:LinkButton>;
</PagerTemplate>;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:深入ASP.NET 2.0的提供者模型

下一篇:ASP.NET中为GridView添加删除提示框