開發環境VS.NET 2005 C# Oracle AjaxPro
最近忙沒時間詳細解釋,先把通用的源碼貼出自己看。
出於對性能的考慮,把省市兩級寫成JS數組,把縣區(鎮)兩級寫在Oracle 裡。透過JS 觸發C# 去讀取資料庫,然後將資料回傳給JS ,再綁定顯示。
操作
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Area.aspx.cs" Inherits="Area" %>
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
http://www.w3.org/1999/xhtml " >
using System;
using System.Data;
using System.Data.OracleClient;
public partial class Area : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
//將C#的類別和枚舉分別註冊到JS裡
AjaxPro.Utility.RegisterTypeForAjax(typeof(Area));
AjaxPro.Utility.RegisterEnumForAjax(typeof(AreaEnum));
}
/**////
/// 取得下拉框所需數據
///
/// 上一級ID
/// 縣/鎮
///
[AjaxPro.AjaxMethod]
public DataTable GetDataTable(string UpID, AreaEnum ae)
...{
if (String.IsNullOrEmpty(UpID))
return null;
string link = "server=XXX;user=XXX;pwd=XXX;";
OracleConnection conn = new OracleConnection(link);
//Oracle 回傳的DataTable 裡的列名全是大寫,在頁面取值時記得大寫
string sql;
if (Enum.Equals(ae, AreaEnum.Xian))
sql = "SELECT id,name FROM City WHERE THREEID=0 AND TWOID=" + UpID;
else
sql = "SELECT id,name FROM City WHERE THREEID=" + UpID;
OracleDataAdapter adapter = new OracleDataAdapter(sql, conn);
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}
}
/**////
/// 地區枚舉
///
public enum AreaEnum
...{
/**////
/// 縣
///
Xian,
/**////
/// 鎮
///
Zhen
}
到此基本功能實現,還有些功能(透過網域名稱IP來判斷地區並直接綁定,將選擇好的地區保存,方便的讀取/儲存城市資訊以便做成控制等等)。有空再寫完。
記得在Web.config 的