天天看點

ajax 控件

确實讓我沒有想到的是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的朋友加入,這裡為大家提供一個交流的平台,也許還有機會大家一起合作做項目作為練習,為将來積累一些經驗。

繼續閱讀