成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為ASP.NET控件加入快捷菜單

開發 后端
雖然快捷菜單在桌面應用程序中已經是非常通用的元素,但是由于在象ASP.NET這樣的基于服務器的技術沒有很好的描繪,所以在Web應用程序中快捷菜單并不是很通用。要想使用快捷菜單,瀏覽器必須高度支持DHTML和豐富事件模式。

雖然快捷菜單在桌面應用程序中已經是非常通用的元素,但是由于在象ASP.NET這樣的基于服務器的技術沒有很好的描繪,所以在Web應用程序中快捷菜單并不是很通用。要想使用快捷菜單,瀏覽器必須高度支持DHTML和豐富事件模式,例如:Microsoft Internet Explorer 5.0及更高版本,或者Netscape 6.0等。然而,各種瀏覽器的對象模式雖然功能上大至相同,但是成員各名字卻各不相同,這就需要我們自己實現對象和事件的從一種模式到到另一種模式的轉換。

 

 這里,我們創建一個針到Internet Explorer的對象模式的ASP.NET快捷菜單。接著,我將經過修改使其功能支持其它瀏覽器。

ContextMenu Control 快捷菜單控件概述:

MSDN Liabrary中包含了幾個DHTML快捷菜單的示例。分別提供了對這一功能的不能實現方法。一個快捷菜單就是在頁面中任何位置的一組標記代碼。它包括兩部分內容——界面和腳本(當用戶在頁面右擊時關聯UI),UI提供一個可點擊的元素的列表——菜單項——和各自的內容文本,圖標,命令名(command name),目標url,提示(tooltip),和所有你認為有必要顯示出來的東西??旖莶藛谓缑媸琼撁娴囊徊糠?,并且屬于頁面控件樹中的一員。(太多的快捷菜單將會出現執行的問題:與大多數用戶的常規情況相比,ASP.NET將發送更多的快捷菜單到瀏覽器)當用戶在頁面的一個元素上右擊時,將引發一段JavaScript,這段腳本將快捷菜單移動到右擊的位置顯示。

快捷菜單將保持隱藏屬性,只有當用戶在頁面的一個綁定個快捷菜單的元素上右擊時,快捷菜單才顯示。頁面元素接收腳本事件并彈出一個快捷菜單作為響應。腳本事件信賴于瀏覽器,在Internet Explorer 5.0和更新版本中是 OnContexMenu事件.在Netscape6.0和更新版本中你要使用 OnMouseUp 事件(在Internet Explorer 5.0+中你也可能使用OnMouseUp事件,但要多寫幾行代碼)在接收事件的腳本中,獲取快捷菜單的UI代碼塊并且將它移動到發生點擊的位置。同時設置彈出的panel的 visibilty屬性。當用戶在菜單項上點擊時,頁面回傳并引發服務器端事件。對于服務器而言,點擊一個菜單項和點擊一具常規的按鈕沒什么區別。

當用戶戶想取消已經打開的快捷菜單時怎么辦呢?在windows程序中,按下Esc鍵或者在菜單區域外點擊都可以取消已彈出的快捷菜單。所以你必須在Web中實現這一功能。請注意,只有快捷菜單處于活動(顯示出來)時,Esc鍵才有郊。因為Esc還可用于其它元素的其它鍵盤快捷方式。

我還可以讓菜單在用戶鼠標移開菜單時隱藏。可以通過腳本操作OnMouseLeave 事件實現。

使用彈出菜單控件

假定我們已以設計出了這個彈出菜單(我們一會兒再說如何實現這個快捷菜單控件),那么如何使用它在ASP.NET頁面中添加一個或多個快捷菜單呢?首先,在Visual Studio? .NET的工個欄中拖一個或多個快捷菜單控件到頁面上。然后,為每個菜單添加菜單項,并配置每個菜單項的的工具提示,命令名(command name)和其它所需的內容,例如快捷鍵和幫助主題的鏈接。命令名(command name)用于在響應點擊快捷菜單發生頁面回傳時確定是哪一個菜單項被點擊;對每一個快捷菜單控件實例的菜單項集合它必須是唯一的。

你必須在HTML標簽的OnContextMenu事件中加入代碼來彈出快捷菜單,代碼必須信賴一系列的參數,象點擊的x,y坐標,點擊的元素,和要使用的快捷菜單的實例等。注意:如果必要你可以使用這種方式完全代替瀏覽器的快捷菜單。綁定到OnContextMenu事件執行的JavaScript代碼是在運行時動態生成的。ContextMenu控件將暴露一個集合屬性來包含分綁定快捷菜單的控件集合,在ContextMenu控件將在運行時給這些要綁定的控件一個 oncontextmenu 屬性。OK!完成!可以測試了。

慢著,讓我們先來想一下ContexMenu控件和頁中任意的顯示快捷菜單的元素的綁定機制,這種機制對設計時的支持怎么樣?理想的情況是:根據基類每一個Web控件直接暴露一個 ContextMenuId屬性。然后在屬性窗口中選擇這個屬性時,將看到在頁面中的ContextMenu控件的列表。當然這些ContextMenu控件我們是已經創建了的;ContextMenuId屬性在ASP.NET 1.x中不支持,在將來的ASP.NET2.0中也不支持。

在Visual Studio .NET 2003 集成開發環境中,ASP.NET復合控件可以很好的完成這一工作??梢酝ㄟ^使用類撰寫組合現有控件來創作新控件。復合控件可呈現一個重新使用現有控件功能的用戶界面。復合控件可以從子控件的屬性合成屬性并處理由子控件引發的事件。它還可以公開自定義屬性和事件。

我不選擇使用復合控件有以下幾個原因:一個是Visual Studio .NET 2003對于Web窗體中的控件功能的擴展支持的不好(請參見:Extender provider components in ASP.NET: an IExtenderProvider implementation),第二,在Visual Studio 2005的ASP.NET設計器中不再支持組件托盤區。Web窗體設計器現在僅支持ASP.NET控件而忽略象復合控件這樣的非可視化的組件。Visual Studio 2005將不再信賴InitializeComponent節,并且不再在代碼文件中自動添任何工具生成(tool-generated)的代碼。ASP.NET控件也不設計成具有快捷菜單,所以要綁定快捷菜單只能通過快捷菜單控件自身的執行。這里我使用類似ASP.NET驗證控件和被驗證控件之間關聯的形式。

【編輯推薦】

  1. ASP.NET全局異常處理淺析
  2. 如何在ASP.NET中使用SmtpMail發送郵件
  3. ASP.NET MVC實例和新RC版本中視圖方面的改進
責任編輯:田超 來源: 天極網
相關推薦

2009-07-27 13:52:36

Panel控件ASP.NET

2009-07-27 16:19:59

ASP.NET報表控件

2009-08-17 09:24:25

ASP.NET控件

2009-07-27 17:25:53

ASP.NET驗證控件

2009-08-03 15:08:00

SqlDataSour

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-08-05 15:57:03

ASP.NET控件ID

2009-08-19 13:44:00

ASP.NET Lis

2009-08-04 10:43:59

ASP.NET控件開發

2009-08-27 16:59:20

ASP.NET用戶控件

2009-08-07 14:40:36

RegularExprASP.NET驗證控件

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-08-04 13:38:36

ASP.NET用戶控件

2009-07-24 16:15:00

擴展ASP.NET G

2009-07-24 15:35:00

ASP.NET Gri

2009-07-21 15:50:47

ASP.NET控件JavaScript

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-29 13:32:06

ASP.NET控件使用

2009-08-07 17:49:44

控件設計器

2009-07-20 13:32:24

ScriptManagASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品区一区二 | 日韩精品免费播放 | 国产成人精品久久 | 亚洲欧美一区二区三区在线 | 一级片在线观看视频 | 亚洲精品国产第一综合99久久 | 久久久久久网站 | 欧亚av在线| 成人小视频在线观看 | 午夜免费在线观看 | 日韩1区2区 | 中文字幕日韩一区 | 亚洲精品68久久久一区 | 免费同性女女aaa免费网站 | 久久久久久久久久一区 | 99精品欧美一区二区三区综合在线 | 国产二区视频 | 久久91精品国产一区二区 | 成年人黄色一级毛片 | 2019中文字幕视频 | 国产伦精品一区二区三区照片91 | 九九热免费观看 | 久久精品一区 | 美女黄网站 | www.887色视频免费 | 无码日韩精品一区二区免费 | 精品九九九| 久草免费在线视频 | 国产精品久久久久久久久久久久午夜片 | 99精品视频免费在线观看 | 欧美综合精品 | 国产一区二区三区视频 | 婷婷色婷婷 | 亚洲成人免费网址 | 久久精品av麻豆的观看方式 | 日韩欧美三区 | 一区二区三区亚洲精品国 | 日韩欧美专区 | 中文字幕在线一区 | 亚洲一区综合 | 亚洲综合国产精品 |