确實讓我沒有想到的是AJAX居然是在2007年才真正走上了曆史的舞台,而且是伴随着一系列的新技術而來。其實,真正讓我感歎的不是因為它是一種“新”的技術,而是發展之迅速。
是以,學習AJAX是相當有必要的,因為它在微軟Web開發技術占據着重要的位置:
微軟Web開發技術:
Asp.net
代碼在後端運作,可輕松連接配接資料庫,通路伺服器,讓使用者動态交換資料,動态産生網頁。
Silverlight
代碼在浏覽器端通過Silverlight Player運作,可利用Xaml代碼生成互動的矢量對象和動畫,并通過Javascript控制
Asp.net AJAX
在前後端都有代碼,可內建前後端的開發技術(Javascript和Asp.net),實作兩端之間的非同步通信,資料交換和協作。
當然,上面估計是針對Silverlight1.0或者1.1說的,如今已經發展到4.0,而且WPF似乎也有心往WEB插足,而且是相當容易的,因為Silverlight本來就是其一個子集。
其實,我還在考慮一個問題,那就是.NET中的另一個WCF,似乎與AJAX“有染”,估計在未來的發展也不能小觑。
下面開始愉快的學習之旅。
首先介紹由VS提供的AJAX控件清單:
ScriptManager:最常用的一個,而最“沒用(不需要你用)”的一個。
ScriptManagerProxy:在編寫自定義控件的時候使用。
Timer:定時回發。
UpdatePanel:指定内容為更新區域。
UpdaeProgress:顯示更新進度條。
顯然,隻有這幾個控件是不能滿足我們的要求的,下面介紹AJAX ControlToolkit中的控件清單:
Accordion:折疊菜單目錄
AlwaysVisibleControlExtender:始終顯示的控件-類似懸浮視窗
AnimationExtender:動畫效果控件
AutoCompleteExtender:自動完成功能
Calendar:月曆控件
CascadingDropDown:級聯菜單控件
CollapsiblePanel:折疊面闆控件
ConfirmButtonExtender:确認按鈕
DragPanelExtender:可拖拽面闆
DropDownExtender:下拉菜單
DropShadowExtender:陰影控件
DynamicPopulateExtender:動态填充控件
FilteredTextBoxExtender:過濾控件
HoverMenuExtender:菜單控件
MaskedEditExtender:編輯驗證控件
ModalPapupExtender:具有關機效果的彈出式控件
MutuallyExclusiveCheckBoxExtender:互斥複選框控件
NoBot:反BOT控件
NumericUpDownExtender:加減數值控件
PagingBulletedListExtender:帶項目符号的清單控件
PasswordStrength:密碼強度提示控件
PopupControlExtender:彈出式控件
Rating:等級控件
ReorderList:可拖拽資料控件
ResizableControlExtender:可伸縮控件
RounderCornerExtender:銳化邊角控件
SilderExtender:滑塊控件
TabContainer:頁籤控件
TextBoxWatermarkExtender:文本框水印控件
ToggleButtonExtender:個性化按鈕控件
UpdatePanelAnimationExtender:局部重新整理動畫控件
ValidatorCaloutExtender:驗證提醒控件
事實上ControlToolkit當中的控件我隻用過ConfirmButton和Calendar這兩個之外,好像别的都沒用過,這次主要的目的就是熟悉其他控件的使用。估計有一些控件也沒有多大用途,在以後估計也沒什麼地方會用到,是以我都不用擔心,你還擔心什麼呢?呵呵,繼續,GO!
1.AutoComplete自動完成控件:
功能:該控件實作自動提示,相信大家在上網的時候都遇到過在填寫TextBox内容的時候,會自動提示以前輸入過的資料,這個控件就是這樣的功能。
屬性:
1.TargetControlID:指定要實作提示功能的控件;
2.ServicePath:WebService的路徑,提取資料的方法是寫在一個WebService中的;
3.ServeiceMethod:寫在WebService中的用于提取資料的方法的名字;
4.MinimumPrefixLength:用來設定使用者輸入多少字母才出現提示效果;
5.CompletionSetCount:設定提示資料的行數;
6.CompletionInterval:從伺服器擷取書的時間間隔,機關是毫秒。似乎去100很合适
呵呵,在使用這個控件的時候,不适用控件之前就有自動提示功能,使用了之後反而沒有了,而且添加控件之後會出現一個編譯錯誤。需“Add AutoComplete page method”添加自動完成頁的方法。如果采用這種方法,可以在該頁的.cs檔案中建立如下代碼:
[System.Web.Services.WebMethodAttribute(),System.Web.Script.Services.ScriptMethodAttribute()]//由于要在用戶端調用web伺服器
public static string[] GetCompletionList1(string prefixText, int count, string contextKey)
{
return default(string[]);
}
然後,我們就可以使用一個檔案來存放要自動提示的字元串,編寫代碼通路并傳回。
當然,一種更常用的方法是單獨建立一個Web服務,在裡面添加該方法。需在其前面添加[System.Web.Script.Services.ScriptService]
在網上摘錄的一個該方法的完整代碼如下:
[System.Web.Script.Services.ScriptService]
public class AutoComplete : System.Web.Services.WebService {
public AutoComplete() {
//Uncomment the following line if using designed components
//InitializeComponent();
}
private static string[] autoCompleteWordList = null;
[WebMethod]//這裡就是提取自動提示字元串的方法,在ServeiceMethod中調用
public string[] GetCompleteList(string prefixText, int count)
{
if (autoCompleteWordList == null)
{
string[] temp = File.ReadAllLines(Server.MapPath("~/App_data/CompleteList.txt"));
Array.Sort(temp,new CaseInsensitiveComparer());
autoCompleteWordList = temp;
}
int index = Array.BinarySearch(autoCompleteWordList,prefixText,new CaseInsensitiveComparer());
if (index < 0)
{
index = ~index;
}
int matchingCount;
for (matchingCount = 0; matchingCount < count && index + matchingCount < autoCompleteWordList.Length; matchingCount++)
{
if (!autoCompleteWordList[index + matchingCount].StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase))
{
break;
}
}
string[] returnValue = new string[matchingCount];
if (matchingCount > 0)
{
Array.Copy(autoCompleteWordList,index,returnValue,0,matchingCount);
}
return returnValue;
}
2.FilteredTextBox過濾控件
功能:過濾文本框中指定的内容,用于防止使用者輸入不合法的字元。
屬性:
1. TargetControlID:被控制文本的ID
2. FilterType:過濾類型,提供4中類型。可以使用“,”間隔設定多種類型
3. ValidChars:當FilterType的屬性包含“Custom”時,此屬性有效,表示有效的字元。
3.MaskedEdit編輯驗證控件
MaskedEditValidator
MaskedEditExtender
功能:用來設定文本框顯示時的一些格式。
屬性:
1. Mask:類似正規表達式
2. MessageValidatorTip:是否提示驗證資訊
3. OnFocusCssClass:當被驗證的控件擷取焦點時,應用的樣式
4. OnInvalidCssClass:當被驗證的控件驗證失敗時,應用的樣式
5. MaskType:驗證類型,提供四種:None、Number、Date和Time
6. InputDirection:文本輸入方向
7. AcceptNegative:是否接受負數的符号“-”
8. DisplayMoney:顯示金額符号的位置
9. PromptCharacter:未輸入完時的提示字元。
一般包含兩個控件同時使用!另一個參考驗證控件。
4. PasswordStrength密碼強度提示控件
功能:在使用者輸入密碼的時候,密碼在文本框後面會有一個提示,說明使用者輸入密碼的強度。
屬性:
DisplayPosition:提示資訊顯示的位置
StrengthIndicatorType:強度提示方式,文本和進度條
PreferredPasswordLength:最合适的密碼長度
PrefixText:提示資訊的字首
TextCssClass:提示資訊的樣式
MinimumNumbericCharacters:密碼中最少要包含的數字個數
MinimumSymbolCharacters:密碼中最少要包含的特殊字元個數
RequiresUpperAndLowerCaseCharacters:是否要求大小寫混合
TextStrengthDescriptions:密碼強度的提示資訊内容,最少2個,最多10個,排列順序由弱到強
CalculationWeightings:4種類型的衡量标準
BarBorderCssClass:提示進度條樣式
HelpStatusLabelID:幫助資訊ID
HelpHandPosition:幫助資訊的位置
5. TextBoxWatermark文本水印控件
功能:當文本中沒有資料時,可以使用非常特殊的樣式填充在文本框中,當使用者開始輸入内容時,這些特色樣式自然消失。當使用者沒有輸入内容,文本框失去焦點後,又出現該樣式。
屬性:
WatermarkText:水印效果提示的文本
WatermarkCssClass:水印效果應用的樣式
6. ValidatorCallout驗證提醒控件
功能:驗證未通過時,彈出一個類似模式對話框的小視窗,提醒使用者發生的錯誤。更加醒目的驗證方式!
屬性:
Width:彈出式資訊的寬度
WarmingIconImageUrl:彈出資訊中的經過圖檔位址
CloseImageUrl:彈出資訊中使用的關閉圖檔位址
7. HoverMenu菜單控件
功能:使一些菜單該出現時才出現,當滑鼠移動到指定地點時不會影響其他元素
屬性:
PopupControlID:作為彈出式菜單的控件ID
HoverCssClass:滑鼠滑過時的樣式
PopupPosition:彈出式菜單坐在的位置
OffsetX:菜單舉例目标控件的位置——橫坐标
OffsetY:縱坐标
PopDelay:彈出菜單的延遲時間
執行個體:HoverMenu控件可實作簡單的彈出菜單效果
參考網站:http://msdn.microsoft.com/zh-cn/dd553520.aspx
用Repeater控件從資料庫中取出資料,在ItemTemplate模闆中使用PopupControl控件,PopupControlID指向一個彈出式菜單面闆,這個彈出式面闆我由Panel改為HyperLink。這裡出現一個小問題,就是滑鼠放在彈出式面闆上,彈出式面闆會跳動,不是呆在滑鼠指定的那個地方。
8. PopupControl彈出式控件
功能:彈出任意類型的控件,不管是伺服器控件還是Html控件
屬性:
彈出式菜單屬性均相似,見上。
9. Accordion(手風琴)折疊菜單目錄
功能:将一組功能相似、任務相同的内容放在不同的頁籤中,然後通過頁籤的Header實作各組内容的檢視。
我們可以逐一地編寫Accordion中的AccordionPane控件,每個AccordionPane控件即代表一個可折疊的面闆。還可以使用資料綁定的方式,分别為其指定标題和内容區域的綁定模闆以及資料源,讓ASP.NET中的資料綁定為我們自動生成其中的若幹個折疊面闆。Accordion還能夠把目前正處于展開狀态的面闆自動記錄下來,并在頁面回送之後恢複其送出前的樣式。
屬性:
SelectedIndex:在Accordion中設計的多個Pane,此屬性用來判斷目前選擇的是哪個Pane
HeaderCssClass:
AutoSize:設計Accordion中Pane的顯示方式,主要有3種:None、Limit和Fill;None可以無限制收縮,Limit限制内容的高度,超出部分出現滾動條,Fill表示和設定的高度一緻,超出部分不會顯示。
FadeTransitions:是否使用透明樣式的褪色特效
TransitionDuration:特效時間間隔,機關為毫秒
FramesPerSecond:幀/秒,折疊特效的速度
Panes:是Accordition内容所在,其包裝必須是“AccordionPane”控件,可以是多個Panes和AccordionPane
表 聲明Accordion控件時的常用屬性标簽
屬性标簽名 | 描 述 |
SelectedIndex | 該控件初次加載時展開的AccordionPane面闆的索引值 |
HeaderCssClass | 該Accordion中包含的所有AccordionPane面闆的标題區域所應用的CSS Class |
ContentCssClass | 該Accordion中包含的所有AccordionPane面闆的内容區域所應用的CSS Class |
AutoSize | 在展開具有不同高度的AccordionPane面闆時,該Accordion的總高度的變化方式。可選如下3個值: r None:該Accordion将随着目前展開的AccordionPane面闆的高度自由伸長/縮短 r Limit:該Accordion将随着目前展開的AccordionPane面闆的高度自由伸長/縮短,不過最高不會超過Accordion的Height屬性設定值。若是其内容高度超過了Height屬性設定值,則将自動顯示滾動條 r Fill:該Accordion的高度将固定為Height屬性的設定值,不随目前展開的不同高度的AccordionPane面闆而變化。若是某個AccordionPane的内容高度超過了Height屬性設定值,則将自動顯示滾動條 |
FadeTransitions | 若該屬性值設定為true,則在切換目前展開的AccordionPane面闆時,将帶有淡入淡出效果 |
TransitionDuration | 展開/折疊一個AccordionPane面闆的過程所花費的時間,機關為毫秒 |
FramesPerSecond | 播放展開/折疊AccordionPane面闆動畫的每秒鐘幀數 |
DataSourceID | 頁面中某個DataSource控件的ID,用于通過資料綁定自動生成AccordionPane面闆 |
<Panes> | 該标簽内将包含一系列的<ajaxToolkit:AccordionPane>标簽,即Accordion- Pane的聲明,用來表示Accordion中包含的面闆 |
<HeaderTemplate> | 在使用資料綁定功能自動生成AccordionPane面闆時,該标簽内将定義每個面闆的标題區域中的内容模闆 |
<ContentTemplate> | 在使用資料綁定功能自動生成AccordionPane面闆時,該标簽内将定義每個面闆的正文區域中的内容模闆 |
需要注意的是FadeTransitions和FramesPerSecond屬性。自然,将FadeTransitions設定為true将讓面闆展開/折疊的過程顯得非常酷,且将FramesPerSecond屬性值設定得比較高也會讓展開/折疊的動畫變得更加平滑,但這樣也同時會加重用戶端程式執行時的負擔,我們應該綜合考慮各種情況合理地配置這兩個屬性。一般來講,若是Accordion的大小适中,且其中也沒有太多的AccordionPane面闆,那麼可以将FadeTransitions設定為true(即顯示淡入淡出效果),并将FramesPerSecond設定為40(即每秒40幀)左右,讓動畫效果更加流暢眩目。而若是對于較大的,甚至全屏的Accordion,或是其中包含了許多個複雜的AccordionPane面闆,那麼就應該将FadeTransitions設定為false,且将FramesPer Second設定為25左右,盡可能地避免對用戶端執行效率産生過多的影響。
與DataSourceID屬性相關的還有DataSource和DataMember屬性,分别表示将綁定到該控件上的資料源(一般在代碼中設定)和DataSource中資料成員的名稱。DataSourceID、DataSource和DataMember屬性是ASP.NET中每一個支援模闆化資料綁定的控件都包含的。
DropDown下拉菜單控件
功能:為任意控件指定下拉菜單,這個下拉菜單必須存在。
屬性:
略
為按鈕等控件執行下拉清單實作快速選擇。
10. CollapsiblePanel折疊面闆控件
功能:折疊面闆就是實作一個Panel的顯示和隐藏,可以定義Panel的樣式。
屬性:
CollapsedSize:折疊後的尺寸
ExpandedSize:伸展後的尺寸
Collapsed:預設打開頁面時,Panel是否處于折疊狀态
ScrollContents:是否在Panel中顯示滾動條
ExpandDirection:伸展方向,水準或垂直
CollapseControlID/ExpandControlID:該屬性指定控制折疊/擴充的控件ID。
d)TextLabelID:指定一個控件,可以在擴充或折疊Panel時顯示CollapsedText/ExpandedText中的内容。
CollapasedText/ExpandedText:Panel折疊/擴充時的文本。
Collapsed:指定頁面導入時Panel是折疊還是擴充。
ImageControlID:指定一個控件,在擴充時顯示ExpandedImage中的圖像;在折疊時顯示CollapsedImage中的圖像。
ExpandedImage/CollapsedImage:在擴充/折疊時顯示不同的圖像。
SuppressPostBack:禁止回傳。
将Panel中的内容顯示或隐藏。使用兩個Panel,一個Panel用于擴充控件的ID,另一個用于折疊控件的ID。
11. DragPanel可拖曳面闆控件
功能:這是一個簡單的Ajax控件,不支援拖拽前和拖拽後的事件操作
屬性:
DragHandleID:實作拖拽的控件,即當拖拽DragHandleID時,實際上移動的是TargetControlID
這個控件最好配合樣式表使用。
12. Tabs頁籤控件
功能:在C/S中,有各種頁籤控件,B/S中沒有,要在一個頁面顯示多組内容,可以通過CSS樣式來顯示和隐藏以達到頁籤的效果。
屬性:
OnClientActiveTabChanged:單擊頁籤标題時觸發的事件
ActiveTabIndex:預設顯示的頁籤
ScrollBars:是否顯示滾動條
這個控件非常棒哦!
13. Animation動畫控件
功能:顯示小動畫
屬性:
OnLoad:頁面加載時觸發
OnClick:單擊控件時觸發
onMouseOver:滑鼠滑過時觸發
OnMouseOut:滑鼠移走時觸發
OnHoverOver:與OnMouseOver類似
OnHoverOut:與OnMouseOut類似“Fade Animation”的屬性主要有4個:
l duration:動畫效果的時間間隔。
l Fps:幀/秒的顯示速度。
l maximumOpacity:最大透明度。
l minimumOpacity:最小透明度。
假如學習了WPF或者Silverlight的話,使用Expression Blend制作的時間幀動畫,就很容易了解了。
說明一下:似乎AJAX的這些控件,和WPF已經在接近了,但還是相差甚遠哈,有這種趨勢而已。
14. DropShadow陰影控件
功能:實作陰影
屬性:
Opacity:透明度,最大值為1,不透明,預設值為0.5
Rounded:是否銳化目标控件邊角
TrackPosition:追随目标控件的位置,此屬性一般應用在控件被拖動的時候
15. RounderCorners銳化邊角控件
功能:該控件同樣其銳化作用,缺點是沒有陰影效果,有點事可以銳化4個邊角的任意一個或多個。
屬性:
Radius:銳化幅度
Corners:銳化的邊角,All表示所有邊角
16. ToggleButton個性化按鈕控件
功能:該控件隻能應用于CheckBox,主要功能是以自定義圖檔的形式顯示複選框的選中和未選中狀态。
屬性:
CheckedImageAlternateText:選中狀态下的提示文本
UnCheckedImageAltenateText:未選中狀态下的提示文本
UncheckedImageUrl:未選中狀态下顯示圖檔位址
CheckedImageUrl:選中狀态下顯示的圖檔位址
DisabledCheckedImageUrl:控件為不可用狀态時,預設時要顯示的圖檔
17. UpdatePanelAnimation局部重新整理動畫控件
功能:該控件用來裝飾UpdatePanel更新的效果,提供對UpdatePanel更新時和更新後的特效,并允許使用者自定義這些特效。
Animation 控件不僅僅是一個控件,它是一個可向控件添加動畫的架構。
屬性:
OnUpdating:更新時應用的特效
OnUpdated:更新後應用的特效
18. AlwaysVisibleControl始終顯示控件
功能:建立一個始終顯示的内容,通常用來顯示菜單、消息和廣告等。
屬性:
VerticalSide:顯示控件時垂直位置,上中下
VerticalOffset:顯示控件時與最上方的距離,相對坐标
HorizontalSide:顯示控件的水準位置:左中右
HorizontalOffset:顯示控件與最左側的距離,相對坐标
ScrollEffectDuration:當滾動條滾動時,顯示控件的顯示延遲,預設時0.1秒
ProfileBindings:要綁定的個性化配置的屬性
19. Calendar月曆控件
功能:可以選擇到文本框中的月曆控件
屬性:
Format:月曆顯示的日期格式
PopupButtonID:當日期是通過選擇某個按鈕彈出的時候
可以使用PopupButtonID指向一幅圖檔,放在文本框後面,點選圖檔就可以彈出月曆控件選擇日期。呵呵,由于是測試,放置了一幅大的圖檔。
20. CascadingDropDown級聯下拉清單控件
功能:級聯菜單,當第一級可用時,第二級可用,第二級可用時,第三級不可用,依次類推。
Category:目前下拉框的類别
PromptText:當下拉框無資料和未選中資料時,給使用者提示。
在使用此控件的時候,由于涉及到資料庫,故按送出按鈕需驗證,如果将EnableEventValidation="false",也就是不驗證可以解決這個問題,但是這樣就不安全了。這一點需要注意。
Category需要同從資料庫中取出資料類别相同,這裡是Xml資料,也就是要對應節點,在此WEB服務中的Hierarchy即存儲相應類别和節點。
21. Confirm确認按鈕控件
主要屬性設定時ConfirmText,即顯示彈出消息框的内容。
22. DynamicPopulate動态填充控件
允許程式在運作的過程中,更改指定控件的内容,類似于“document.getElementById(“ControlID”).value=”Selected Control””語句。這個控件是利用createElement和appendChild等DOM方法實作的。
屬性:
BehaviorID:行為ID,用于在用戶端擷取Ajax控件
TargetControlID:需要動态填充的内容控件
ClearContentsDuringUpdate:在更新時是否情況内容
ServicePath:擷取資料需要使用的Web服務
ServiceMethod:擷取資料的方法
UpdatingCssClass:更新過程中使用的樣式
ContextKey:上下文關鍵字,通過此關鍵字,判斷傳回的資料類型
CustomScript:一段自定義的腳本,必須為能被格式化的字元串
PopulateTriggerControlID:引發填充事件的控件
23. ModalPopup具有關機效果的彈出式控件
該彈出式控件最大的特色就是具備“模式”視窗風格,在B/S應用中,使用這樣風格的好處是,當使用者選擇這個設定時,其他内容都會受到保護。
使用這種方法,處理彈出視窗中的事件是一件很繁瑣的事情,由于不能直接在彈出控件中添加伺服器端方法,因為添加了也沒有反應,估計要想實作事件需在用戶端使用Javascript來完成。在DynamicPopulateExtender.aspx執行個體中可以看出。
24. MutuallyExclusiveCheckBox互斥複選框控件
功能:複選框實作多個項目選擇,但是項目之間可以含有互斥項。含有相同Key的為同一組,同一組之間是互斥的,但與不同Key之間的組,是可以同時選擇的。
屬性:
TargetID:被控制的複選框。
Key:區分互斥複選框的鍵值。
同時使用多個BulletedList控件也可以實作此功能!
25. NoBot反Bot控件
功能:防止自動送出程式的運作。
屬性:
OnGenerateChallengeAndResponse:自定義的相應事件,用于反BOT
ResponseMinimumDelaySeconds:響應的最小延遲,機關為秒
26. NumbericUpDown加減數值控件
功能:為一個文本框添加上下按鈕,當單擊這個按鈕時,可以實作數字的加減,同時也可以提供靜态資料,實作資料的上下選擇。
屬性:
Width:TextBox顯示時的寬度,預設為0,不顯示目标TextBox
RefValues:進行上下操作的一些靜态值
TargetButtonDownID:進行“下”操作的按鈕
TargetButtonUpID:進行“上”操作的按鈕
在.cs頁面中直接使用Page Method,不是在單獨的asmx檔案中使用:
注釋掉會[System.Web.Services.WebMethod](自己添加)
或者[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()](自動生成)會彈出錯誤框。
還需要注意方法中的參數的資料類型。
27. PagingBulletedList帶項目符号的清單控件
功能:顯示一些清單項,主要的擴充對象是BulletedList控件。
屬性:
ClientSort:是否在用戶端進行排序
IndexSize:标題索引的字元個數
Separator:标題索引的間隔符
将相同清單開始的IndexSize個字元作為标題,點選之後展開所有以此标題為首的清單項。
在使用伺服器端代碼來改變IndexSize的值時,使用TextBox時需添加AutoPostBack屬性,但是這樣會出現頻繁重新整理的問題。如果使用UpdatePanel來實作呢,使用觸發的時候,也會遇到根本不通路伺服器端代碼的問題。這種的方案是:使用一個Button控件在UpdatePanel中觸發,注意觸發方式采用PostBackTrigger,不要采用異步觸發AsyncPostBackTriger(注意,Button控件本來就會導緻會發,是以在UpdatePanel中也沒有必要添加觸發器的,說得更狠一點,就是不需要UpdatePanel也可以,我使用觸發器,不過是為了熟悉它而已。呵呵,但是這樣實作的就不是使用局部重新整理了。)。。是以,最佳解決方案,還是在用戶端用Javascript來實作。
28. Rating顯示等級控件
功能:顯示等級資訊,可以以圖檔的形式顯示。
屬性:
· CurrentRating — 所使用的初始評分
· MaxRating — 最高評分
· EmptyStarCssClass — 評分項(“星号”)為空時使用的 CSS 類
· FilledStarCssClass — 評分項(“星号”)已填寫時使用的 CSS 類
· StarCssClass — 為一個 visible stat 使用的 CSS 類
· WaitingStarCssClass — 将星級評分發送回伺服器時使用的 CSS 類
· AutoPostBack :當單擊"評級"這個控件時,是否回送。預設不回送。
· OnChanged :在完成評級之後,觸發"用戶端回調"事件以便執行某一段程式代碼。
準備兩種圖像,一種用于顯示填寫過的評分項,另一種顯示空白評分項
29. ReorderList可拖曳資料控件
功能:ReorderList控件用來顯示資料,其功能相當于GridView、DataList和Repeater等,都可以綁定資料,并支援各種模闆。ReorderList的優勢在于,其允許使用者自定義行的顯示,即使用者可以拖行到任意位置,同時還支援用戶端的排序,這樣可以減少回調,提高性能。
ReorderList控件時的常用屬性标簽
屬性标簽名 | 描 述 |
DataSourceID | 頁面中某個DataSource控件的ID,用于通過資料綁定自動生成清單項目 |
DataKeyField | 資料源中鍵字段的名稱,該字段中的值應該在所在記錄中是唯一且不變的,ReorderList将用條目中該字段的值作為記錄的标志,将在更新/删除中使用 |
AllowReorder | 是否允許使用者對清單中的項目進行重新排序,若指定了<ReorderTemplate>,則該屬性将自動設定為true |
SortOrderField | 資料源中作為排序字段的名稱。在使用者進行重新排序之後,ReorderList将自動修改需要更新的條目的該字段 |
DragHandleAlignment | 條目的可拖動區域與條目之間的相對位置關系,可選Top(上部)、Bottom(下部)、Left(左邊)和Right(右邊) |
PostBackOnReorder | 若該屬性值設定為true,則當使用者對清單中的項目進行重新排序之後,将自動引發一次整頁的回送;否則将以異步回調的方式向伺服器端發送請求 |
EditItemIndex | 清單中目前處于編輯模式下的項目的索引值 |
ShowInsertItem | 若該屬性值為true,則清單中将顯示出一個用來添加新條目的特殊行,即<InsertItemTemplate>模闆中定義的内容 |
ItemInsertLocation | 插入的新行在整個清單中的位置,可選Beginning(第一項)或End(最後一項) |
<ItemTemplate> | 該标簽内将定義清單中普通條目的模闆 |
<DragHandleTemplate> | 該标簽内将定義清單條目中可拖放區域的模闆。使用者隻有在該區域中拖放才能夠對該條目進行重排序 |
<ReorderTemplate> | 該标簽内将定義拖動清單條目時清單中可投放區域的模闆 |
<InsertItemTemplate> | 該标簽内将定義用來添加新條目的特殊行的模闆 |
<EditItemTemplate> | 該标簽内将定義處于編輯狀态中的清單條目的模闆 |
<EmptyListTemplate> | 該标簽内将定義空清單的模闆。若清單中沒有任何條目,則将顯示該模闆中定義的内容 |
對于PostBackOnReorder屬性,若該ReorderList控件将隻提供對項目重新排序的功能,則應該将其設定為false,這樣可以充分利用ReorderList自帶的異步回調功能。若是該ReorderList控件同樣支援對條目的添加、删除、編輯等複雜功能,則應該将PostBackOn- Reorder屬性設定為true,并用UpdatePanel包圍該ReorderList,以期得到Ajax的異步回送功能。
使用這個真難拖動,真是太難了!這讓我想起了WebParts,可惜我原本打算在那上面花點功夫的,但是沒有,真是遺憾。好不容易實作了拖動吧,費了好大勁都不能拖動一次,隻有當你自己做練習的時候才知道,估計這個以後不怎麼使用。
30. ResizableControl可伸縮控件
功能:該控件可以改變其他控件的高度和寬度。
屬性:
HandleCssClass:在控件中支援改變的位置所使用的樣式
ResizableCssClass:改變控件大小時應用的樣式
MinmumWidth/MaxmumWidth/MaxmumHeight/MinmumHeight:允許控件伸縮的最小、最大寬度和高度
OnClientResize:控件伸縮後,用戶端觸發的事件
HandleOffsetX/HandleOffsetY:在控件中支援改變的位置(X/Y位置),一般是控件的右下角相對坐标
這個控件實作的是伸縮,不是放大和縮小。也就是隻能看見你整個圖檔的局部,你可以拖動使得像視窗那樣改變視窗大小來檢視内容,注意内容大小時沒有改變的。
31. Slider滑塊控件
功能:該控件可以個性化地顯示目前的數字值,使用者還可以通過文本框,控制滑塊的資料值。
屬性:
TargetControlID:該控件的目标控件,即其要擴充的控件。
BoundControlID:當改變值時,顯示資料的控件。
EnableHandleAnimation:當改變值時滑塊是否有動畫效果。值為True,則有Animation效果;值為False,則沒有Animation效果。
RaiseChangeOnlyOnMouseUp:設定是否隻有在滑鼠離開的時候才觸發事件。值為True,則是;否則,不是。
總結:
由于AJAX(Asynchronous JavaScript and XML)技術是基于JavaScript和XML,實作的是同用戶端的互動讓使用者沒有感覺(呵呵,自己這麼了解的,其實有感覺)是以,一些代碼雖然可以在伺服器端處理,但是更好的方式是在用戶端使用JavaScript來處理。至于XML,我覺得可以不講其單純的了解為XML資料,而就是資料。從整理的AJAX控件就可以看出來,有好多個控件可以通過Web Service同伺服器端通信,實作資料的交換。
還有一點需要注意的是:在同一頁面使用過多的AJAX控件,會導緻性能下降,迫使浏覽器彈出對話框:
《此頁面上的腳本造成Web浏覽器運作速度緩慢。是否繼續運作,您的計算機将可能停止響應》
不論怎樣,關于AJAX控件的使用,總算整理完了。雖然,有的很粗糙,而且更多的我都是從我的角度來了解整理的,很多都是從網上查找整理出來的,代碼都是參照别人的代碼,親自實作了的。
歡迎廣大學習WEB程式設計的朋友加入!
群裡迫切需要,精通C#、ASP.NET、Javascript、DIV+CSS、Photoshop的朋友加入,這裡為大家提供一個交流的平台,也許還有機會大家一起合作做項目作為練習,為将來積累一些經驗。