所以我用 Ajax 來做更新頁面的動作,讓他即時的在頁面上顯示資料,隨手建立兩個 aspx 檔案 ( Default.aspx、ReadData.aspx )。
Default.aspx : 鍵入資料並同時傳送資料給 ReadData.aspx ,接收 ReadData.aspx 傳回之資料,即時顯示於此頁面上。
ReadData.aspx : 依照傳遞參數顯示資料。
註:範例資料庫為北風 ( northwind ) 資料庫。
以下為原始碼:
ReadData.aspx - 將多餘程式碼都拿掉,否則另一頁面接收資料會顯示不出來。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ReadData.aspx.cs" Inherits="ReadData" %> <form id="form1" runat="server"> <div> <asp:GridView ID="gvData" runat="server"> </asp:GridView> </div> </form>
ReadData.aspx.cs - 讀取資料庫資料並讓 GridView 接收顯示。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; public partial class ReadData : System.Web.UI.Page { string strConn = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True"; string strQuery; string strID; SqlConnection connection; SqlCommand command; SqlDataAdapter adapter; DataTable dt; protected void Page_Load(object sender, EventArgs e) { if ( ( strID = Request.QueryString["ID"]) != null ) { try { connection = new SqlConnection(strConn); command = new SqlCommand(); strQuery = "SELECT EmployeeID [Employee ID], FirstName + ' ' + LastName [Full Name] FROM Employees WHERE EmployeeID=" + strID; command.CommandText = strQuery; command.Connection = connection; adapter = new SqlDataAdapter(command); dt = new DataTable(); adapter.Fill(dt); gvData.DataSource = dt; gvData.DataBind(); } catch (Exception ex) { } } } }
Default.aspx - 利用 ajax 來讀取網址包含參數索回傳的網頁內容 ( 當然用 XML 最好 ),定時執行 javascript 來即時更新頁面內容 ( 以下為 2 秒更新一次 )。
<%@ Page Title="首頁" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> <script language="javascript" type="text/javascript"> function cretateXMLHttpRequest() { if (window.XMLHttpRequest) { // 如果是 Mozilla, Safari,... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // 如果是 IE try { // IE 又分成新版和舊版的,其處理方式也不同 // 新版的 IE,目前 IE 9 OK http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { // 舊版的 IE http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } } function doStart() { cretateXMLHttpRequest(); var id = document.getElementById('<%= txtID.ClientID %>').value; if (id != "") { var url = "ReadData.aspx?ID=" + id; http_request.open("GET", url, false); http_request.send(null); var show = document.getElementById('show'); show.innerHTML = http_request.responseText; } setTimeout(doStart, 2000); // alert(id); } </script> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <asp:TextBox ID="txtID" runat="server"></asp:TextBox> <div id="show"></div> <script language="javascript" type="text/javascript"> doStart(); </script> </asp:Content>
執行結果如下圖:
引用 & 參考:
AJAX 入門:第一個範例
AJAX核心-XMLHttpRequest[筆記]
回aspnet目錄
回首頁
沒有留言 :
張貼留言