一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

AJAX 應(yīng)用 - JavaScript調(diào)用C# 函數(shù)

 名字真麻煩 2010-04-19
如下圖 1,在第一個(gè) TextBox1 輸入 EmployeeID,鼠標(biāo)離開(kāi) TextBox1 失去焦點(diǎn)、觸發(fā) onBlur 事件時(shí),會(huì)自動(dòng)高速訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),取得該筆記錄的另外兩個(gè)字段,顯示在下方的兩個(gè) TextBox 中。
如下圖 2,當(dāng)用戶(hù)輸入不合理的 EmployeeID 時(shí),會(huì)提示錯(cuò)誤信息,并清空另外兩個(gè) TextBox 里既有的文字。
當(dāng)用戶(hù)輸入不存在于數(shù)據(jù)表 Employees 的 EmployeeID 時(shí),會(huì)提示錯(cuò)誤信息,并清空另外兩個(gè) TextBox 里既有的文字。
當(dāng)用戶(hù)手動(dòng)清空 TextBox1,鼠標(biāo)離開(kāi) TextBox1 失去焦點(diǎn)、觸發(fā) onBlur 事件時(shí),會(huì)清空另外兩個(gè) TextBox 里既有的文字。
1.jpg
圖 1 網(wǎng)站項(xiàng)目中常用到的功能。以本示例的做法,不論網(wǎng)頁(yè)上有多少個(gè) TextBox 需要此功能,都不會(huì)相互干擾

圖 2 輸入不合理或錯(cuò)誤類(lèi)型的 EmployeeID,JavaScript 接收到 C# 返回的錯(cuò)誤信息


關(guān)鍵代碼如下:

Default.aspx.cs
  1. public partial class _Default : System.Web.UI.Page
  2. {
  3.     protected void Page_Load(object sender, EventArgs e)
  4.     {
  5.         //設(shè)置 TextBox 的 OnBlur 事件被觸發(fā)時(shí),所要調(diào)用的 JavaScript 函數(shù)
  6.         this.TextBox1.Attributes["onblur"] = "getEmployeeInfo('TextBox1', 'TextBox2', 'TextBox3');";
  7.         this.TextBox4.Attributes["onblur"] = "getProductInfo('TextBox4', 'TextBox5', 'TextBox6');";

  8.         //設(shè)置在 JavaScript 文件中,所能調(diào)用的 C# 自定義類(lèi)的名稱(chēng)
  9.         Ajax.Utility.RegisterTypeForAjax(typeof(MyClass01));
  10.     }
  11. }
復(fù)制代碼
我們看到上方,透過(guò) RegisterTypeForAjax 函數(shù),可向 AJAX.NET 注冊(cè)我們寫(xiě)的 C# 自定義類(lèi) MyClass01。接著 AJAX.NET 會(huì)瀏覽這個(gè)自定義類(lèi),里面標(biāo)示有 AjaxMethodAttribute 的函數(shù),如下方代碼中的 getEmployeeInfo 和 getProductInfo 函數(shù),我們并在這兩個(gè)函數(shù)里,實(shí)際去訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)并取回需要的一或多個(gè)字段的值。
  1. public class MyClass01
  2. {
  3.     public static string strConnString = WebConfigurationManager.ConnectionStrings["ConnString_SqlClient"].ConnectionString;

  4.     //由 EmployeeID (如: 1, 2 ,3 , ...),去數(shù)據(jù)庫(kù)取出他的 LastName、Title
  5.     [Ajax.AjaxMethod()]       //告知 Ajax 封裝類(lèi),為此方法創(chuàng)建一個(gè) JavaScript 代理,這樣才能被客戶(hù)端調(diào)用
  6.     public string getEmployeeInfo(string strEmployeeID)
  7.     {
  8.         string strResult = string.Empty;
  9.         string strSql = "SELECT LastName, Title FROM EMPLOYEES WHERE EmployeeID = @EmployeeID";

  10.         using (SqlConnection conn = new SqlConnection(strConnString))
  11.         {
  12.             conn.Open();
  13.             if (conn.State == ConnectionState.Open)
  14.             {
  15.                 using (SqlCommand cmd = new SqlCommand(strSql, conn))
  16.                 {
  17.                     cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = strEmployeeID.Trim();

  18.                     //若確定要捉的記錄只有一筆,可加上此 ADO.NET 的「SingleRow」參數(shù),以?xún)?yōu)化性能、節(jié)省系統(tǒng)資源
  19.                     using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow))
  20.                     {
  21.                         if (dr.Read())
  22.                         {
  23.                             strResult = dr[0].ToString() + "§" + dr[1].ToString();
  24.                         }
  25.                     }
  26.                 }
  27.             }
  28.         }

  29.         return strResult;     //strResult = "result1§result2";   //返回值為用 "§" 字符所分割的一或多個(gè)字符串
  30.     }


  31.     //由 ProductID (如: 1, 2 ,3 , ...),去數(shù)據(jù)庫(kù)取出他的 ProductName、QuantityPerUnit
  32.     [Ajax.AjaxMethod()]       //告知 Ajax 封裝類(lèi),為此方法創(chuàng)建一個(gè) JavaScript 代理,這樣才能被客戶(hù)端調(diào)用
  33.     public string getProductInfo(string strProductID)
  34.     {
  35.         //...中間略...
  36.     }

  37. } //end of class
復(fù)制代碼
如下,onBlur 事件被觸發(fā)時(shí),會(huì)在 JavaScript 里調(diào)用 C# 的同名函數(shù),并從數(shù)據(jù)庫(kù)里取得返回值。
  1. //由 EmployeeID (如: 1, 2 ,3 , ...),去數(shù)據(jù)庫(kù)取出他的 LastName、Title
  2. function getEmployeeInfo(TextBox1, TextBox2, TextBox3) {

  3.     //調(diào)用 App_Code 文件夾里,C# 自定義類(lèi)的 getEmployeeInfo 函數(shù)
  4.     var response = MyClass01.getEmployeeInfo(document.getElementById(TextBox1).value);

  5.     //response 為從 C# 自定義類(lèi)里的函數(shù)所傳回來(lái)的,由一或多個(gè) "§" 字符所組成的一個(gè)字符串
  6.     if ((response.value == null) || (response.value.length == 0)) {  //若用戶(hù)輸入「不合理的字符」或「無(wú)對(duì)應(yīng)數(shù)據(jù)的ID號(hào)碼」
  7.         alert('數(shù)據(jù)庫(kù)里查無(wú)數(shù)據(jù) !');
  8.         document.getElementById(TextBox2).value = "";
  9.         document.getElementById(TextBox3).value = "";
  10.     }
  11.     else if (response.value.length > 0) {      //若數(shù)據(jù)庫(kù)里有查找到對(duì)應(yīng)的數(shù)據(jù)
  12.         var strArrResult = response.value.split("§");
  13.         if (strArrResult[0].length > 0)
  14.             document.getElementById(TextBox2).value = strArrResult[0];
  15.         if (strArrResult[1].length > 0)
  16.             document.getElementById(TextBox3).value = strArrResult[1];
  17.     }
  18. }


  19. 如下,在 web.config 里添加配置,讓所有 ajax/*.ashx 的請(qǐng)求,改由 Ajax.PageHandlerFactory 產(chǎn)生的 HTTP Handler 處理,而不再由默認(rèn)的 System.Web.UI.PageHandlerFactory 處理程序工廠(chǎng) [9] 來(lái)處理。

  20. web.config
  21. <system.web>
  22.     <httpHandlers>
  23.         <add verb="POST,GET" path="ajax/*.ashx"
  24.            type="Ajax.PageHandlerFactory, Ajax" />
  25.     </httpHandlers>
  26. </system.web>
復(fù)制代碼
源碼下載: 090828.zip (30.03 KB)

2.jpg (24.06 KB)

 

2.jpg

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    亚洲国产天堂av成人在线播放| 一区二区三区亚洲天堂| 国产精品免费视频视频| 免费在线观看欧美喷水黄片| 少妇熟女亚洲色图av天堂| 欧美日韩在线观看自拍| 美女激情免费在线观看| 日韩日韩日韩日韩在线| 国产伦精品一区二区三区高清版| 91欧美日韩一区人妻少妇| 五月综合激情婷婷丁香| 精品一区二区三区人妻视频| 欧美人妻一区二区三区| 欧美午夜伦理在线观看| 欧美国产日本免费不卡| 国产传媒高清视频在线| 国产色一区二区三区精品视频| 亚洲高清亚洲欧美一区二区| 91一区国产中文字幕| 国产精品不卡一区二区三区四区| 小黄片大全欧美一区二区| 亚洲中文字幕综合网在线| 丰满人妻一二三区av| 熟女免费视频一区二区| 欧美一区日韩二区亚洲三区| 亚洲天堂一区在线播放| 东京热男人的天堂一二三区| 日韩精品一级片免费看| 九九热这里只有精品哦| 国产成人精品在线一区二区三区| 日韩精品一区二区三区含羞含羞草| 高清一区二区三区不卡免费| 午夜精品久久久免费视频| 中文字幕五月婷婷免费| 中文字幕日韩欧美一区| 欧美午夜性刺激在线观看| 五月婷日韩中文字幕四虎| 在线欧美精品二区三区| 国产又粗又爽又猛又黄的| 爽到高潮嗷嗷叫之在现观看| 激情偷拍一区二区三区视频|