<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      ASP.NET ViewState 初探 (2)

      [摘要]請看下面的示例:要在 Web 頁上顯示一個項目列表,而每個用戶需要不同的列表排序。項目列表是靜態的,因此可以將這些頁面綁定到相同的緩存數據集,而排序順序只是用戶特定的 UI 狀態的一小部分。ViewState 非常適合于存儲這種類型的值。代碼如下:[Visual Basic]<%@ Impo...

      請看下面的示例:要在 Web 頁上顯示一個項目列表,而每個用戶需要不同的列表排序。項目列表是靜態的,因此可以將這些頁面綁定到相同的緩存數據集,而排序順序只是用戶特定的 UI 狀態的一小部分。ViewState 非常適合于存儲這種類型的值。代碼如下:

      [Visual Basic]
      <%@ Import Namespace="System.Data" %>
      <HTML>
      <HEAD>
      <title>用于頁面 UI 狀態值的 ViewState/title>
      </HEAD>
      <body>
      <form runat="server">
      <H3>
      在 ViewState 中存儲非控件狀態
      </H3>
      <P>
      此示例將一列靜態數據的當前排序順序存儲在 ViewState 中。<br>
      單擊列標題中的鏈接,可按該字段排序數據。<br>
      再次單擊該鏈接,將按相反順序排序。
      <br><br><br>
      <asp:datagrid id="DataGrid1" runat="server"
      OnSortCommand="SortGrid" BorderStyle="None" BorderWidth="1px"
      BorderColor="#CCCCCC" BackColor="White" CellPadding="5" AllowSorting="True">
      <HeaderStyle Font-Bold="True" ForeColor="White"
      BackColor="#006699">
      </HeaderStyle>
      </asp:datagrid>
      </P>
      </form>
      </body>
      </HTML>
      <script runat="server">

      ' 在 ViewState 中跟蹤 SortField 屬性
      Property SortField() As String

      Get
      Dim o As Object = ViewState("SortField")
      If o Is Nothing Then
      Return String.Empty
      End If
      Return CStr(o)
      End Get

      Set(Value As String)
      If Value = SortField Then
      ' 與當前排序文件相同,切換排序方向
      SortAscending = Not SortAscending
      End If
      ViewState("SortField") = Value
      End Set

      End Property

      ' 在 ViewState 中跟蹤 SortAscending 屬性
      Property SortAscending() As Boolean

      Get
      Dim o As Object = ViewState("SortAscending")
      If o Is Nothing Then
      Return True
      End If
      Return CBool(o)
      End Get

      Set(Value As Boolean)
      ViewState("SortAscending") = Value
      End Set

      End Property

      Private Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load

      If Not Page.IsPostBack Then
      BindGrid()
      End If

      End Sub

      Sub BindGrid()

      ' 獲取數據
      Dim ds As New DataSet()
      ds.ReadXml(Server.MapPath("TestData.xml"))

      Dim dv As New DataView(ds.Tables(0))

      ' 應用排序過濾器和方向
      dv.Sort = SortField
      If Not SortAscending Then
      dv.Sort += " DESC"
      End If

      ' 綁定網格
      DataGrid1.DataSource = dv
      DataGrid1.DataBind()

      End Sub

      Private Sub SortGrid(sender As Object, e As DataGridSortCommandEventArgs)
      DataGrid1.CurrentPageIndex = 0
      SortField = e.SortExpression
      BindGrid()
      End Sub

      </script>

      [C#]
      <%@ Page Language="C#" %>
      <%@ Import Namespace="System.Data" %>
      <HTML>
      <HEAD>
      <title>用于頁面 UI 狀態值的 ViewState</title>
      </HEAD>
      <body>
      <form runat="server">
      <H3>
      在 ViewState 中存儲非控件狀態
      </H3>
      <P>
      此示例將一列靜態數據的當前排序順序存儲在 ViewState 中。<br>
      單擊列標題中的鏈接,可按該字段排序數據。<br>
      再次單擊該鏈接,將按相反順序排序。
      <br><br><br>
      <asp:datagrid id="DataGrid1" runat="server" OnSortCommand="SortGrid"
      BorderStyle="None" BorderWidth="1px" BorderColor="#CCCCCC"
      BackColor="White" CellPadding="5" AllowSorting="True">
      <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699">
      </HeaderStyle>
      </asp:datagrid>
      </P>
      </form>
      </body>
      </HTML>
      <script runat="server">

      // 在 ViewState 中跟蹤 SortField 屬性
      string SortField {

      get {
      object o = ViewState["SortField"];
      if (o == null) {
      return String.Empty;
      }
      return (string)o;
      }

      set {
      if (value == SortField) {
      // 與當前排序文件相同,切換排序方向
      SortAscending = !SortAscending;
      }
      ViewState["SortField"] = value;
      }
      }

      // 在 ViewState 中跟蹤 SortAscending 屬性
      bool SortAscending {

      get {
      object o = ViewState["SortAscending"];
      if (o == null) {
      return true;
      }
      return (bool)o;
      }

      set {
      ViewState["SortAscending"] = value;
      }
      }

      void Page_Load(object sender, EventArgs e) {

      if (!Page.IsPostBack) {
      BindGrid();
      }
      }

      void BindGrid() {

      // 獲取數據
      DataSet ds = new DataSet();
      ds.ReadXml(Server.MapPath("TestData.xml"));

      DataView dv = new DataView(ds.Tables[0]);

      // 應用排序過濾器和方向
      dv.Sort = SortField;
      if (!SortAscending) {
      dv.Sort += " DESC";
      }

      // 綁定網格
      DataGrid1.DataSource = dv;
      DataGrid1.DataBind();
      }

      void SortGrid(object sender, DataGridSortCommandEventArgs e) {

      DataGrid1.CurrentPageIndex = 0;
      SortField = e.SortExpression;
      BindGrid();
      }

      </script>

      下面是上述兩個代碼段中引用的 testdata.xml 的代碼:

      <?xml version="1.0" standalone="yes"?>
      <NewDataSet>
      <Table>
      <pub_id>0736</pub_id>
      <pub_name>New Moon Books</pub_name>
      <city>Boston</city>
      <state>MA</state>
      <country>USA</country>
      </Table>
      <Table>
      <pub_id>0877</pub_id>
      <pub_name>Binnet & Hardley</pub_name>
      <city>Washington</city>
      <state>DC</state>
      <country>USA</country>
      </Table>
      <Table>
      <pub_id>1389</pub_id>
      <pub_name>Algodata Infosystems</pub_name>
      <city>Berkeley</city>
      <state>CA</state>
      <country>USA</country>
      </Table>
      <Table>
      <pub_id>1622</pub_id>
      <pub_name>Five Lakes Publishing</pub_name>
      <city>Chicago</city>
      <state>IL</state>
      <country>USA</country>
      </Table>
      <Table>
      <pub_id>1756</pub_id>
      <pub_name>Ramona Publishers</pub_name>
      <city>Dallas</city>
      <state>TX</state>
      <country>USA</country>
      </Table>
      <Table>
      <pub_id>9901</pub_id>
      <pub_name>GGG&G</pub_name>
      <city>Muenchen</city>
      <country>Germany</country>
      </Table>
      <Table>
      <pub_id>9952</pub_id>
      <pub_name>Scootney Books</pub_name>
      <city>New York</city>
      <state>NY</state>
      <country>USA</country>
      </Table>
      <Table>
      <pub_id>9999</pub_id>
      <pub_name>Lucerne Publishing</pub_name>
      <city>Paris</city>
      <country>France</country>
      </Table>
      </NewDataSet>




      日韩精品一区二区三区高清