Page.IsPostBack屬性的一個應用,就是取代ASP中的RS(Remote Scripting)技術。至于RS的基本概念和用法我已經在asp
版里面有很多介紹了,它主要的優勢就是在不刷新當前頁面的情況下和服務器端進行通信。但是由于它的底層是使用了
java技術,所以它用起來還是顯得較為煩瑣,下面我就將介紹在ASP+中如何利用Page.IsPostBack來取代RS技術。
按照我的習慣是喜歡用具體的例子來解釋問題,所以這次還是使用一個簡單的實例來說明問題。下面這個例子中,將使
用一個Products.aspx程序,它主要有兩個服務器端控件(Server-side control),這是asp+里面引入的新的控件編程方
式,一個是一個下拉框控件--'mudCategories',另外一個是列表框控件--'mudProducts'。這個例子將演示,列表框
中的內容將跟隨下拉框中內容的改變而改變,為了大家重現的方便,我將使用SQL Server中自帶的數據庫例子來實現。
Products.aspx代碼如下:
代碼:
---------------------------------------------------------------------
<%@ Import Namespace="System.Data"%><%@ Import Namespace="System.Data.ADO"%><script language="VB"
runat="server">Sub Page_Load (SourceObj as Object, EveArg as EventArgs)If Not Page.IsPostBack Then
Dim mudCommand As ADODataSetCommand Dim mudConnection As ADOConnection Dim dSet As New DataSet
Dim strSQL as String Dim connStr as String strSQL = "SELECT CategoryID, CategoryName
From Categories" connStr = "Provider = SQLOLEDB; Data Source=test; Initial Catalog=Northwind;
User ID=sa; password=;" mudConnection = New ADOConnection(connStr) mudCommand = New
ADODataSetCommand(strSQL, mudConnection) mudCommand.FillDataSet
(dSet, "Categories") mudCategories.DataSource = dSet.Tables("Categories").DefaultView
mudCategories.DataBind()End IfEnd SubSub displayProducts (Source as Object, EveArg as EventArgs) Dim
mudCommand As ADODataSetCommand Dim mudConnection As ADOConnection Dim dSet As New DataSet Dim
strSQL as String Dim connStr as String connStr = "Provider = SQLOLEDB; Data Source=test; Initial
Catalog=Northwind; User ID=sa; password=;" strSQL = "Select ProductID, ProductName From
Products" strSQL = strSQL & " WHERE CategoryID = " & mudCategories.SelectedItem.Value
mudConnection = New ADOConnection(connStr) mudCommand = New ADODataSetCommand(strSQL,
mudConnection) mudCommand.FillDataSet(dSet, "Products") mudProducts.DataSource =
dSet.Tables("Products").DefaultView mudProducts.DataBind()End Sub </script><html><form
name="mudForm" runat="server"> 產品目錄: <asp:DropDownList id="mudCategories" runat="server"
DataTextField="CategoryName" DataValueField="CategoryID" AutoPostBack="true"
OnSelectedIndexChanged="displayProducts"/>產品: <asp:ListBox id="mudProducts" SelectionMode="Multiple"
DataValueField="ProductID" DataTextField="ProductName" runat="server" /></html>
----------------------------------------------------------------------
從例子程序可以看到,其中顯然是使用了服務器端控件的下拉框OnChange事件配合AutoPostBack和Page.IsPostBack屬性
就可以很簡單和清晰的實現了以前在asp中煩瑣的RS實現方法。
呵呵,希望大家從上面的這個例子中有所收獲。
----------------------------------------------------------------------
作者:Batman