Ajax Control Toolkit 34个服务器端控件 详解
1. Accordion
【功能概述】
Accordion可以讓你設(shè)計(jì)多個(gè)panel 并且一次只顯示一個(gè)Panel .在頁(yè)面上的顯示效果就像是使用了多個(gè)CollapsiblePanels只不過每一次只展開其中一個(gè)CollapsiblePanel.Accordion控件內(nèi)部包含了若干個(gè)AccordionPane,每一個(gè)AccordionPane的template里包括了對(duì)其Header和Content的定義。我們可以在后臺(tái)代碼中通過SelectedIndex屬性取得當(dāng)前展開的哪一個(gè)Panel,還可以控制哪一個(gè)Panel展開。
經(jīng)常可以見到類似的效果,比如QQ、Msn好友分類的折疊效果。
【細(xì)節(jié)】
(1)不要把Accordion放在Table中而又把 FadeTransitions 設(shè)置為True,這將引起布局混亂
??? (2) 在AccordionPane模板中的Content中可以定義任何Web元素,表現(xiàn)的就像一個(gè)容器
(3) AccordionPane內(nèi)容模板自動(dòng)改變大小有三種AutoSize modes :None(推薦) Limit? Fill
(4) $find('ctl00_ContentPlaceHolder1_MyAccordion_AccordionExtender')這里找到的是Behavior.什么是Behavior呢?在Asp.net Ajax框架中包含一組動(dòng)作并完成一個(gè)功能. Accordion的一個(gè)Behavior就是淡入淡出.
找到Behavior的引用,behavior.set_FadeTransitions()? behavior.get_FadeTransitions()的方式來(lái)實(shí)現(xiàn)具體某一個(gè)Behavior的訪問和修改.
var behavior = $find('ctl00_SampleContent_MyAccordion_AccordionExtender');這種寫法是不好的,我們?cè)谧詣?dòng)測(cè)試的頁(yè)面中發(fā)現(xiàn)了更好的寫法: var behavior=$find("<%= MyAccordion.ClientID %>_AccordionExtender");
?
【代碼示意】
????? <script language="javascript" type="text/javascript">
??????????? function toggleFade()? {
??????????????? var behavior = $find('ctl00_ContentPlaceHolder1_MyAccordion_AccordionExtender');
??????????????? if (behavior)? {???????
??????????????????? behavior.set_FadeTransitions(!behavior.get_FadeTransitions());
??????????????? }
??????????? }
??????????? function changeAutoSize()? {
??????????????? var behavior = $find('ctl00_ContentPlaceHolder1_MyAccordion_AccordionExtender');
??????????????? var ctrl = $get('autosize');??? //這里找的是下拉列表控件,不是Behavior
??????????????? if (behavior)? {
??????????????????? var size = 'None';?? // 這里順便看看怎么使用Select
??????????????????? switch (ctrl.selectedIndex)? {
??????????????????????? case 0 :
??????????????????????????? behavior.get_element().style.height = 'auto';
??????????????????????????? size = AjaxControlToolkit.AutoSize.None;
??????????????????????????? break;
??????????????????????? case 1 :
??????????????????????????? behavior.get_element().style.height = '400px';
??????????????????????????? size = AjaxControlToolkit.AutoSize.Fill;
??????????????????????????? break;
??????????????????????? case 2 :
??????????????????????????? behavior.get_element().style.height = '400px';
??????????????????????????? size = AjaxControlToolkit.AutoSize.Limit;
??????????????????????????? break;
??????????????????? }
??????????????????? behavior.set_AutoSize(size);
??????????????? }
??????????????? if (document.focus)? {
??????????????????? document.focus();
??????????????? }
??????????? }
??????? </script>
?
?<ajaxToolkit:Accordion ID="MyAccordion" runat="server" SelectedIndex="0" HeaderCssClass="accordionHeader"
??????????? ContentCssClass="accordionContent" FadeTransitions="false" FramesPerSecond="40"
??????????? TransitionDuration="250" AutoSize="None">
??????????? <Panes>
??????????????? <ajaxToolkit:AccordionPane ID="AccordionPane1" runat="server">
??????????????????? <Header>
??????????????????????? <a href="" οnclick="return false;" class="accordionLink">1. Accordion</a></Header>
??????????????????? <Content>
??????????????????? </Content>
??????????????? </ajaxToolkit:AccordionPane>
??????????? </Panes>
??????? </ajaxToolkit:Accordion>
?
2. AlwaysVisibleControl
【功能概述】
?AlwaysVisibleControl 是一個(gè)簡(jiǎn)單的擴(kuò)展控件可以讓一部分內(nèi)容浮動(dòng)在頁(yè)面上,當(dāng)滾動(dòng)頁(yè)面或者改變?yōu)g覽器大小時(shí)總是可見的。它可以擴(kuò)展任意一個(gè)Asp.net 控件,并可按照要求設(shè)置水平 豎直方向上的相對(duì)距離.
最多的應(yīng)用是在線閱讀的目錄和不勝其煩的浮動(dòng)小廣告。
?
【細(xì)節(jié)】
(1)?? 避免控件閃爍,要擴(kuò)展的控件要使用absolutely position
(2)?? HorizontalSide="Center" VerticalSide="Top" 使用這個(gè)方式控制浮動(dòng)的位置
(3)?? Var label = ocument.getElementById('ctl00_SampleContent_currentTime');這行代碼我們可以使用更簡(jiǎn)單的方法:
???? var label = $get('ctl00_SampleContent_currentTime');
【代碼示意】
?代碼示意:
??? <cc1:AlwaysVisibleControlExtender ID="AlwaysVisibleControlExtender1" HorizontalSide="Center" VerticalSide="Top"? TargetControlID="Panel1" runat="server">
?
?
3. Animation
【功能概述】
28個(gè)控件種效果最酷的!顧名思義實(shí)現(xiàn)動(dòng)畫效果。它是一個(gè)插入式,可擴(kuò)展的框架可以方便的為你的頁(yè)面添加動(dòng)畫效果。
【細(xì)節(jié)】
請(qǐng)參考頁(yè)面代碼閱讀下面的細(xì)節(jié)內(nèi)容:
(1)Sys.UI.DomElement.getLocation(b) 取得控件位置的函數(shù),常用!!!
???? (2)動(dòng)畫分為兩種:Animation Action 后者的強(qiáng)大讓我很興奮
???? (3)<Sequence>? </Sequence> 順序執(zhí)行的動(dòng)畫腳本
???? (4)<Parallel>? <Parallel >? 并發(fā)執(zhí)行的動(dòng)畫腳本
???? (5)【Action】 <StyleAction AnimationTarget="btnCloseParent" Attribute="opacity" value="0" /> 控制目標(biāo)元素外觀樣式,屬性--值的格式修改,一個(gè)元素可以應(yīng)用多個(gè)StyleAction
???? (6)【Action】<EnableAction AnimationTarget="ctl00_ContentPlaceHolder1_btnInfo" Enabled="true" /> 控件是否可用使用的方式跟上面是一樣的,當(dāng)前控件可省略AnimationTarget
?? (7)【Action】 <ScriptAction Script="Cover($get('ctl00_ContentPlaceHolder1_btnInfo'), $get('flyout'));" />執(zhí)行一段腳本的Action?????????
??? (8) 【Action】 <HideAction />隱藏目標(biāo)的控件
??? (9) 【Action】<OpacityAction AnimationTarget="info" Opacity="0" /> 設(shè)置透明度的Action
?? (10)【Animation】 <FadeIn AnimationTarget="info" Duration=".2"/>?????? <FadeOut /> 淡入淡出??
? (11)【Animation】<Scale ScaleFactor="0.05" Center="true" ScaleFont="true" FontUnit="px" />??? 控制目標(biāo)元素的大小但是注意:If scaleFont is true, the size of the font will also scale with the element.? If center is true, then the element's center will not move as it is scaled. It is important to note that the target must be positioned (i.e. absolutely) so that settings its top/left properties will change its location in order for center to have an effect.
???? (12) 【Animation】??? <Pulse Duration=".1" /> 脈搏跳動(dòng)效果????????
???? (13)【Animation】 <Color Duration=".2" StartValue="#FFFFFF" EndValue="#FF0000" Property="style" PropertyKey="color" />? 顏色漸變效果,設(shè)置起始結(jié)束顏色就可以
???? (14)? 【Animation】 <Resize Width="260" Height="280" />改變?cè)氐拇笮ction
(15)動(dòng)畫效果是在用戶某一個(gè)動(dòng)作發(fā)生的時(shí)候觸發(fā),觸發(fā)的時(shí)機(jī)包括:OnLoad? OnClick? OnMouseOver OnMouseOut OnHoverOver OnHoverOut
正式版的頁(yè)面文件為動(dòng)畫腳本添加了注釋更加清晰易懂.上面列出的是常用的一些動(dòng)畫效果,全部資料參見Anmation Reference。
仔細(xì)閱讀Animation的頁(yè)面代碼,其實(shí)我們已經(jīng)提前觸摸到了Xaml的編程風(fēng)格。Asp.net Ajax之后的下一代WEB界面是WPF/E,WPF/E現(xiàn)在支持的是”javascript+Xaml” 還不支持”C# + Xaml”。
下一代的WEB UI會(huì)是怎樣的?下一個(gè)版本的Asp.net 會(huì)怎樣安排Ajax的位置?WPF/E會(huì)不會(huì)被整合在新版本的Asp.net中呢?期待中……
?
【示意代碼】
代碼示意:
?? <ajaxToolkit:AnimationExtender ID="ae"
? runat="server" TargetControlID="ctrl">
??? <Animations>
??????? <OnLoad>?? </OnLoad>
??????? <OnClick>?? </OnClick>
??????? <OnMouseOver>?? </OnMouseOver>
??????? <OnMouseOut>?? </OnMouseOut>
??????? <OnHoverOver>?? </OnHoverOver>
??????? <OnHoverOut>?? </OnHoverOut>
??? </Animations>
</ajaxToolkit:AnimationExtender>
?
4. AutoComplete? NEW!!!
【功能概述】
AutoComplete控件是對(duì)Asp.net文本框控件的擴(kuò)展,當(dāng)用戶詞匯前面的字母時(shí)以彈出區(qū)域的形式給出備選詞。這個(gè)功能的完成依賴于特定的Web Service。
在正式版的Ajax Control Toolkit中看到自動(dòng)完成擴(kuò)展控件有一種感覺:它終于出現(xiàn)在了它應(yīng)該出現(xiàn)的地方。之前AutoComplete控件是在CTP版本中以核心組件的形式出現(xiàn)的,這個(gè)功能極為明確的控件被歸類到核心組件,我還是比較迷惑。正式版中它終于成為了一個(gè)擴(kuò)展控件。
Google的自動(dòng)完成功能,新浪網(wǎng)易等信箱的收件人自動(dòng)完成功能是這個(gè)功能的成功應(yīng)用。
【細(xì)節(jié)】
??? 從Atlas的版本開始,AutoComplete的使用方法就沒有太大的改變,只要注意:
(1)調(diào)用的Web Service方法簽名有要求:
?????????? [WebMethod]
?????????? public string[] GetCompletionList(string prefixText, int count) { ... }
???? (2)MinimumPrefixLength最短前綴字符數(shù),就是說(shuō)你至少要鍵入幾個(gè)字符才會(huì)出現(xiàn)提示
?
5. Calendar NEW!!!
【功能概述】
Calendar同樣是對(duì)文本框的擴(kuò)展,當(dāng)點(diǎn)擊文本框的時(shí)候彈出日期選擇選項(xiàng)。現(xiàn)在的版本提供的功能已經(jīng)和WinForm中的日期控件一樣,可以通過點(diǎn)擊日期選擇,點(diǎn)擊箭頭在年月之間切換。
【細(xì)節(jié)】
???????? (1)同樣是對(duì)文本框的擴(kuò)展,文本框獲得焦點(diǎn)就會(huì)出現(xiàn)日期選擇,樣式是可以自定義的
???????? (2)雖然一定是對(duì)文本框的擴(kuò)展但是我們還是可以指定彈出按鈕PopupButtonID,一旦這個(gè)值設(shè)定了,文本框獲得焦點(diǎn)也不會(huì)彈出日期選擇
???????? (3)不需要把它放在UpdatePanel中
6. CascadingDropDown
【功能概述】
CascadingDropDown 控件是對(duì)ASP.NET DropDownList control的擴(kuò)展,實(shí)現(xiàn)對(duì)一個(gè)DropDownList操作時(shí)其它DropDownList發(fā)生相應(yīng)的變化。這個(gè)功能的實(shí)現(xiàn)依賴于Web Service。
【細(xì)節(jié)】
(1)如果使用Web service 方法簽名必須符合下面的形式:
??????????????? [WebMethod]
??????????????? public CascadingDropDownNameValue[] GetDropDownContents(
??????????????? string knownCategoryValues, string category){...}
(2)在閱讀代碼的時(shí)候請(qǐng)關(guān)注:Category屬性。官方說(shuō)法The name of the category this DropDownList represents 實(shí)打開~/App_Data/CarsService.xml你就發(fā)現(xiàn)這是Xml的元素標(biāo)簽。從這個(gè)角度我們就解決了為什么聯(lián)動(dòng),即聯(lián)動(dòng)的本質(zhì);同時(shí)也明白了調(diào)用Service的參數(shù)約定。
【示意代碼】
????? <ajaxToolkit:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="DropDownList1" Category="Make"? PromptText="Please select a make"? LoadingText="[Loading makes ]"? ServicePath="CarsService.asmx" ServiceMethod="GetDropDownContents"/>
??????????????? <ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="DropDownList2" Category="Model" PromptText="Please select a model" LoadingText="[Loading models ]" ServiceMethod="GetDropDownContentsPageMethod" ParentControlID="DropDownList1"/>
??????????????? <ajaxToolkit:CascadingDropDown ID="CascadingDropDown3" runat="server" TargetControlID="DropDownList3" Category="Color" PromptText="Please select a color" LoadingText="[Loading colors ]" ServicePath="~/CascadingDropDown/CarsService.asmx" ServiceMethod="GetDropDownContents" ParentControlID="DropDownList2"/>
??
另外頁(yè)面上還有一段定義UpdatePanel的代碼很典型,可以作為參考:
? <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" RenderMode="inline">
??????????? <ContentTemplate>
??????????????? <asp:Label ID="Label1" runat="server" Text="[No response provided yet]" />
??????????? </ContentTemplate>
??????????? <Triggers>
??????????????? <asp:AsyncPostBackTrigger ControlID="DropDownList3" EventName="SelectedIndexChanged" />
??????????? </Triggers>
??????? </asp:UpdatePanel>
7. CollapsiblePanel
【功能概述】
這個(gè)控件幾乎在每一個(gè)頁(yè)面上都出現(xiàn)了。它是非常靈活的一個(gè)控件,可以擴(kuò)展任何ASP.NET Panel control。在頁(yè)面上輕松實(shí)現(xiàn)展開收縮效果。這種效果我們最熟悉的恐怕就是XP的文件任務(wù)欄了。
【細(xì)節(jié)】
(1)??? CollapsiblePanel 默認(rèn)認(rèn)為使用了 標(biāo)準(zhǔn) CSS box model 早期的瀏覽器要!DOCTYPE 中設(shè)置頁(yè)面為自適應(yīng)方式提交數(shù)據(jù)rendered in IE's standards-compliant mode.
(2)??? 可以自動(dòng)展開 自動(dòng)收縮Autoexpand="true" AutoCollapse="true"但是這兩個(gè)本身是互斥的不能同時(shí)為True;如果設(shè)置了這兩個(gè)屬性其中一個(gè)為True就不要在設(shè)置 Collapsed="True",這樣就沒有意義了。
(3)??? TextLabelID="Label1"這個(gè)屬性有什么深意\高級(jí)的操作么?我還在研究。。。
?代碼示意:
?? <ajaxToolkit:CollapsiblePanelExtender ID="cpe" runat="Server"
??? TargetControlID="Panel1"
??? CollapsedSize="0"
??? ExpandedSize="300"
??? Collapsed="True"
??? ExpandControlID="LinkButton1"
??? CollapseControlID="LinkButton1"
??? AutoCollapse="False"
??? AutoExpand="False"
??? ScrollContents="True"
??? TextLabelID="Label1"
??? CollapsedText="Show Details "
??? OpenedText="Hide Details"
??? ImageControlID="Image1"
??? ExpandedImage="~/images/collapse.jpg"
??? CollapsedImage="~/images/expand.jpg"
??? ExpandDirection="Height"/>
?
8. ConfirmButton
【功能概述】
這個(gè)控件是對(duì)Button和繼承了Button的控件的擴(kuò)展,它可以捕捉到用戶點(diǎn)擊了對(duì)話框中的“是”“否”;如果是“是”就繼續(xù)執(zhí)行后面的代碼,反之就停止執(zhí)行它默認(rèn)的提交行為。
【細(xì)節(jié)】
(1) 要擴(kuò)展的LinkButton Button 以及ConfirmButtonExtender都要放在updatepanel里面
?????? 如果是放在外面,點(diǎn)擊“確定”或者“取消”之后還是會(huì)導(dǎo)致頁(yè)面刷新!
(2)更簡(jiǎn)單的方法:
? this.Button1.Attributes["onclick"]="javascript:return confirm('確定要停止下載么?');";
(3) 如果是需要服務(wù)器端獲取用戶選擇,還是使用模式彈出吧
9.DragPanel
?【功能概述】
DragPanel extender可以輕松的讓控件 "draggability".DragPanel 擴(kuò)展的目標(biāo)是任意 ASP.NET Panel .你可以設(shè)置拖動(dòng)行為的細(xì)節(jié),比如哪里是類似于標(biāo)題欄一樣的區(qū)域。
【細(xì)節(jié)】
(1)?? TargetControlID 要拖動(dòng)的控件
(2)??? DragHandleID?? 拖動(dòng)的標(biāo)題欄所在的ControlID 示例代碼中: panel6包含panel7(標(biāo)題) panel8(內(nèi)容)擴(kuò)展的對(duì)象是panel6
(3)?? 是不是發(fā)現(xiàn)這段JS代碼了呢?如果去掉這段代碼,圖到頁(yè)面邊緣的時(shí)候是不正常的,它自己跑回原來(lái)位置了 :)
??????? <script type="text/javascript">
??????? // The following snippet works around a problem where FloatingBehavior
??????? // doesn't allow drops outside the "content area" of the page - where "content
??????? // area" is a little unusual for our sample web pages due to their use of CSS
??????? // for layout.
??????? function setBodyHeightToContentHeight() {
??????????? document.body.style.height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight)+"px";
??????? }
??????? setBodyHeightToContentHeight();
??????? $addHandler(window, "resize", setBodyHeightToContentHeight);??
??? </script>
?
【示意代碼】
代碼示意
?<ajaxToolkit:DragPanelExtender ID="DPE1" runat="server"
??? TargetControlID="Panel3"
??? DragHandleID="Panel4" />
?
10. DropDown
【功能概述】
? DropDown 同樣是一個(gè) ASP.NET AJAX extender 可以對(duì)任何 ASP.NET control 進(jìn)行擴(kuò)展實(shí)現(xiàn) SharePoint-style drop-down menu效果。彈出的只不過是其它的panel或者控件而已。??? 在IE瀏覽器中下拉列表總是在最前面的,的確是影響頁(yè)面效果,這個(gè)控件的出現(xiàn)可以解決這一問題.這隨時(shí)隨地的彈出窗口成為WEB 2.0網(wǎng)站的標(biāo)志性建筑,彈出的東西也越來(lái)越豐富。
【細(xì)節(jié)】
(1)TargetControlID要在什么控件上實(shí)現(xiàn)擴(kuò)展
??? (2)DropDownControlID彈出來(lái)什么
(3) 示例中是對(duì)一個(gè)Label進(jìn)行的擴(kuò)展,我試著擴(kuò)展TextBox效果更好!
【示意代碼】
?代碼示意:
? <asp:Panel ID="DropPanel" runat="server" CssClass="ContextMenuPanel" Style="display: none;
??????????? visibility: hidden;">
???????????? <asp:LinkButton runat="server" ID="Option1" Text="Option 1" CssClass="ContextMenuItem"
??????????????? OnClick="OnSelect" />
??????????? <asp:LinkButton runat="server" ID="Option2" Text="Option 2" CssClass="ContextMenuItem"
??????????????? OnClick="OnSelect" />
??????????? <asp:LinkButton runat="server" ID="Option3" Text="Option 3 (Click Me!)" CssClass="ContextMenuItem"
??????????????? OnClick="OnSelect" />
??????? </asp:Panel>
??????? <cc1:DropDownExtender runat="server" ID="DDE" TargetControlID="TextLabel"
??????????? DropDownControlID="DropPanel" />
還有一段代碼有很多可以學(xué)習(xí)的地方:
代碼示意:
? <asp:UpdatePanel id="Update" runat="server">
??????????? <ContentTemplate>
??????????????? <asp:Label id="lblSelection" runat="server" Style="padding: 5px;" />
??????????? </ContentTemplate>
??????????? <Triggers>
??????????????? <asp:AsyncPostBackTrigger ControlID="Option1" EventName="Click" />
??????????????? <asp:AsyncPostBackTrigger ControlID="Option2" EventName="Click" />
??????????????? <asp:AsyncPostBackTrigger ControlID="Option3" EventName="Click" />
??????????? </Triggers>
??????? </asp:UpdatePanel>
??????? <ajaxToolkit:UpdatePanelAnimationExtender ID="UpdateAnimation" runat="server" TargetControlID="Update" BehaviorID="Highlight">
??????????? <Animations>
??????????????? <OnUpdated>
??????????????????? <Sequence>
??????????????????????? <ScriptAction Script="$find('Highlight')._onUpdated._animation._animations[1].set_target($get('ctl00_ContentPlaceHolder1_lblSelection'));" />
??????????????????????? <Color Duration=".5" StartValue="#FFFF90" EndValue="#FFFFFF" Property="style" PropertyKey="backgroundColor" />
??????????????????? </Sequence>
??????????????? </OnUpdated>
??????????? </Animations>
??????? </ajaxToolkit:UpdatePanelAnimationExtender>
11. DropShadow
【功能概述】
陰影效果
?【 細(xì)節(jié)】
(1)?? Width 單位:px? 默認(rèn)5px
(2)?? Opacity? 不透明度0-1.0 默認(rèn).5
【示意代碼】
? 代碼示意:
??? <ajaxToolkit:DropShadowExtender ID="dse" runat="server"
??????? TargetControlID="Panel1"
??????? Opacity=".8"
??????? Rounded="true"
??????? TrackPosition="true" />
?
12. DynamicPopulate
【功能概述】
能實(shí)用Web Service或頁(yè)面方法來(lái)動(dòng)態(tài)的替換控件的內(nèi)容。調(diào)用的方法返回的是一個(gè)Html的字符串,作為目標(biāo)元素的子節(jié)點(diǎn)插入其中。
【 細(xì)節(jié)】
?(1)ClearContentsDuringUpdate? 替換之前先清除以前的內(nèi)容(默認(rèn)True)
? (2)PopulateTriggerControlID 觸發(fā)器綁定的控件單擊時(shí)觸發(fā)
? (3)ContextKey傳遞給Web Service的隨機(jī)字符串
? (4) Web Service方法簽名必須符合下面的形式:
??????????????? [WebMethod]
??????????????? string DynamicPopulateMethod(string contextKey)
??????????????? {...}
??????????????? Note you can replace "DynamicPopulateMethod" with a naming of your choice, but the return
??????????????? type and parameter name and type must exactly match, including case.
(5) 我們非常欣慰的一點(diǎn)就是BehaviorID="dp1",這種用法是我所期望的。
(6) CustomScript 怎么用呢??This script must evaluate to a string value. ??
【示意代碼】
代碼示意:
<ajaxToolkit:DynamicPopulateExtender ID="dp" runat="server"
??? TargetControlID="Panel1"
??? ClearContentsDuringUpdate="true"
??? PopulateTriggerControlID="Label1"
??? ServiceMethod="GetHtml"
??? UpdatingCssClass="dynamicPopulate_Updating" />
?????????????
代碼示意2:
<asp:Panel ID="Panel1" runat="server" CssClass="dynamicPopulate_Normal">
??????? </asp:Panel>? //要擴(kuò)展的panel
<ajaxToolkit:DynamicPopulateExtender ID="dp" BehaviorID="dp1" runat="server"
????????? ClearContentsDuringUpdate="true"
????????? PopulateTriggerControlID="Label1"
????????? TargetControlID="Panel1"
????????? ServiceMethod="GetHtml"
????????? UpdatingCssClass="dynamicPopulate_Updating">
??? </ajaxToolkit:DynamicPopulateExtender>
??? <script runat="server">
??? [System.Web.Services.WebMethod]
??? [System.Web.Script.Services.ScriptMethod]
??? public static string GetHtml(string contextKey)? {
??????? // a little pause to mimic a latent call.
??????? //
??????? System.Threading.Thread.Sleep(250);
??????? string value = "";
??????? if (contextKey == "U")? {
??????????? value = DateTime.UtcNow.ToString();
??????? } else? {
??????????? value = String.Format("{0:" + contextKey + "}", DateTime.Now);
??????? }
??????? return String.Format("<span style='font-family:courier new;font-weight:bold;'>{0}</span>", value);
??? }
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script? type="text/javascript">
??? function updateDateKey(value)? {
??????? var behavior = $find('dp1'); //這樣使用BehaviorID可是方便多了
??????? if (behavior)? {
??????????? behavior.populate(value);// 內(nèi)部實(shí)現(xiàn)調(diào)用了Service
??????? }
??? }
??? Sys.Application.add_load(function() {updateDateKey('G');});? //頁(yè)面加載時(shí)要執(zhí)行的腳本!
</script>
13. FilteredTextBox
【功能概述】
FilteredTextBox擴(kuò)展控件用來(lái)阻止用戶在文本框輸入無(wú)效字符。由于這種效果的實(shí)現(xiàn)是依賴于deactivating JavaScript(怎么翻譯呢?),所以不要期望數(shù)據(jù)會(huì)發(fā)送到服務(wù)器端進(jìn)行校驗(yàn)。
【細(xì)節(jié)】
(1)過濾條件Numbers LowercaseLetters UppercaseLetters?? Custom
?(2)過濾條件也可以是Custom的組合 FilterType="Custom, Numbers"
??? (3)ValidChars="+-=/*()." Custom要定義這樣的有效字符串
(4)這個(gè)控件我認(rèn)為是聊勝于無(wú),我們要把允許輸入的數(shù)據(jù)進(jìn)行枚舉,太難了。事實(shí)上,這個(gè)控件在任何狀態(tài)下都是接受中文的。如果使用正則表達(dá)式情形或許好些。看它的實(shí)現(xiàn)代碼還有進(jìn)一步改進(jìn)的可能,學(xué)習(xí)研究中……
【示意代碼】
示意代碼:
<ajaxToolkit:FilteredTextBoxExtender ID="ftbe" runat="server"
??????? TargetControlID="TextBox3"????????
??????? FilterType="Custom, Numbers"
??????? ValidChars="+-=/*()." />
在該控件的實(shí)現(xiàn)代碼中我發(fā)現(xiàn)了這樣一段,這可能是一個(gè)突破口:
特殊鍵排除代碼:
<?? var scanCode;
??????????????????????? if (evt.rawEvent.keyIdentifier) {
???????????
??????????? // Safari
??????????? // Note (Garbin): used the underlying rawEvent insted of the DomEvent instance.
??????????? if (evt.rawEvent.ctrlKey || evt.rawEvent.altKey || evt.rawEvent.metaKey) {
??????????????? return;
??????????? }
???????????
??????????? if (evt.rawEvent.keyIdentifier.substring(0,2) != "U+") {
??????????????? return;
??????????? }
???????????
??????????? scanCode = evt.rawEvent.charCode;
???????????
??????????? if (scanCode == 63272 /* Delete */) {
??????????????? return;
??????????? }
??????? }?
??????? else {
??????????? scanCode = evt.charCode;
??????? }?
???????????
??????? if (scanCode && scanCode >= 0x20 /* space */) {???????????????
??????????? var c = String.fromCharCode(scanCode);???????????????????????
???????????
??????????? if(!this._processKey(c)) {
??????????????? evt.preventDefault();
??????????? }
??????? }
??? }
???
?
14. HoverMenu
【功能概述】
HoverMenu控件可以擴(kuò)展任何 ASP.NET WebControl, 同時(shí)將把附加的顯示內(nèi)容關(guān)聯(lián)到該控件上,當(dāng)用戶移動(dòng)鼠標(biāo)到該控件的時(shí)候附加的內(nèi)容將顯示出來(lái)。
【細(xì)節(jié)】
(1)?? PopupControlID要彈出來(lái)什么
?(2)PopupPostion 在哪里彈出來(lái)Left (Default), Right, Top, Bottom, Center.
?(3)OffsetX/OffsetY 彈出項(xiàng)與源控件的距離
(4) PopDelay 彈出延時(shí)顯示 單位milliseconds. Default is 100.
【代碼示意】
代碼示意:
<ajaxToolkit:HoverMenuExtender ID="hme2" runat="Server"
??? TargetControlID="Panel9"
??? HoverCssClass="popupHover"
??? PopupControlID="PopupMenu"
??? PopupPosition="Left"
??? OffsetX="0"
??? OffsetY="0"
??? PopDelay="50" />
示例頁(yè)面上還有一個(gè)小細(xì)節(jié):
HttpUtility.HtmlEncode()使用 HttpUtility.HtmlEncode 將危險(xiǎn)的符號(hào)轉(zhuǎn)換為它們的 HTML 表示形式。
代碼示意:
????? <asp:Label Font-Bold="true" ID="Label1" runat="server" Text='<%# HttpUtility.HtmlEncode(Convert.ToString(Eval("Title"))) %>'></asp:Label></td>
???? <asp:Label ID="Label2" runat="server" Text='<%# HttpUtility.HtmlEncode(Convert.ToString(Eval("Description"))) %>'></asp:Label></td>
???????????????? <asp:Label ID="Label3" runat="server" Text='<%# Eval("Priority") %>'></asp:Label>
?
15. MaskedEdit NEW!!!
【功能概述】
MaskedEdit 控件是對(duì)TextBox control的擴(kuò)展.用戶輸入會(huì)在客戶端進(jìn)行驗(yàn)證。在示例頁(yè)面中,我感覺實(shí)際效果并不是太好所以沒有深入學(xué)習(xí),不多說(shuō)了。
16. ModalPopup
【功能概述】
?ModalPopup 擴(kuò)展控件允許在頁(yè)面上模式彈出內(nèi)容并阻止用戶和頁(yè)面上其他區(qū)域的交互。模式彈出區(qū)域的樣式都是可以自定義的。用戶可以在模式彈出框選擇OK/Cancel,對(duì)用戶選擇的處理方式有兩種:使用客戶端腳本或者PostBack到服務(wù)器端。這樣我們就得到了用戶的選擇結(jié)果!
【細(xì)節(jié)】
(1)?? 看下面的代碼可以看到執(zhí)行客戶端腳本的方法。
(2)?? 應(yīng)該說(shuō)這個(gè)控件是提供了一個(gè)模式彈出對(duì)話框的模板
(3)?? 在正式版以前的所有版本,這個(gè)控件在Opear瀏覽器中都是不正常的。正式版已經(jīng)修正這個(gè)BUG,現(xiàn)在正在比較學(xué)習(xí)兩個(gè)版本的源代碼,看看問題的原因和解決方法是什么。
【示意代碼】
代碼示意:
? <asp:Panel ID="Panel2" runat="server" CssClass="modalPopup" style="display:none">
??????? <p>
??????????? <asp:Label ID="Label1" runat="server" BackColor="Blue" ForeColor="White" Style="position: relative"
??????????????? Text="信息提示"></asp:Label> </p>
??????? <p >確定要?jiǎng)h除當(dāng)前下載的任務(wù)么?</p>
??????? <p style="text-align:center;">
??????? <asp:Button ID="Button1" runat="server" Text="OK" ></asp:Button>
??????? <asp:Button ID="Button2" runat="server" Text="Cancel"></asp:Button>
??????? </p>
??? </asp:Panel>
??? <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender" runat="server" TargetControlID="LinkButton1"
??? PopupControlID="Panel2" BackgroundCssClass="modalBackground" DropShadow="true"
??? OkControlID="Button1" OnOkScript="onOk()" CancelControlID="CancelButton" />
17. MutuallyExclusiveCheckBox
【功能概述】
互斥復(fù)選框就像RadioButton一樣,應(yīng)用的場(chǎng)景是:“a number of choices are available but only one can be chosen”
?【細(xì)節(jié)】
?(1)Key屬性用來(lái)分組就像RdiolistGroup一樣
??????????????? (2)argetControlID用來(lái)綁定已有的CheckBox
【代碼示意】
?????????????? <ajaxToolkit:MutuallyExclusiveCheckboxExtender runat="server"
??? ID="MustHaveGuestBedroomCheckBoxEx"
??? TargetControlID="MustHaveGuestBedroomCheckBox"
??? Key="GuestBedroomCheckBoxes" />
18. NoBot
【功能概述】
提供了簡(jiǎn)單的Captcha 圖靈測(cè)試 用來(lái)屏蔽bot/spam 垃圾信息。是一個(gè)反垃圾信息控件。我查了一下資料,我的理解是:比如你點(diǎn)擊一個(gè)按鈕需要一秒鐘的時(shí)間,而這一秒鐘的時(shí)間你不可能再做其他的操作比如再點(diǎn)一次;這樣區(qū)分出了人和機(jī)器。避免機(jī)器人自動(dòng)點(diǎn)擊注冊(cè)暴力破解之類的事情
? 【 細(xì)節(jié)】
?(1)OnGenerateChallengeAndResponse 這個(gè)屬性是EventHandler<NoBotEventArgs> 調(diào)用服務(wù)器端的方法,注意方法簽名
?????????????????????? 例如:?? protected void CustomChallengeResponse(object sender, NoBotEventArgs e) {……}
【示意代碼】
?代碼示意:
??? <ajaxToolkit:NoBot
? ID="NoBot2"
? runat="server"
? OnGenerateChallengeAndResponse="CustomChallengeResponse"
? ResponseMinimumDelaySeconds="2"
? CutoffWindowSeconds="60"
? CutoffMaximumInstances="5" />
19. NumericUpDown
【功能概述】
實(shí)現(xiàn)Winform里面的Updown控件,可以自定義最大值最小值增減步長(zhǎng),同時(shí)還可以使用值列表或者調(diào)用Web Service來(lái)決定下一個(gè)值是什么。上下按鈕的圖片同樣是可以自定義的。
?? 【細(xì)節(jié)】
?(1)普通整數(shù)增減
?????????????? (2)值列表循環(huán)顯示比如下面的第二個(gè)例子RefValues
??????????????? (3)調(diào)用Web Service的格式:??????????????
<ajaxToolkit:NumericUpDownExtender ID="NUD1" runat="server"
??? TargetControlID="TextBox1"
??? Width="100"
??? RefValues="January;February;March;April"
??? TargetButtonDownID="Button1"
??? TargetButtonUpID="Button2"
??? ServiceDownPath="WebService1.asmx"
??? ServiceDownMethod="PrevValue"
??? ServiceUpPath="WebService1.asmx"
??? ServiceUpMethod="NextValue"
??? Tag="1" />
(4)上下按鈕如果不需美化就這樣使用:TargetButtonDownID=" " TargetButtonUpID=" "
?
【示意代碼】
代碼示意:
?????????? <ajaxToolkit:NumericUpDownExtender ID="NumericUpDownExtender1" runat="server"
??????????????????? TargetControlID="TextBox1" Width="120" RefValues=""
??????????????????? ServiceDownMethod="" ServiceUpMethod="" TargetButtonDownID="" TargetButtonUpID="" />
??????????????? <ajaxToolkit:NumericUpDownExtender ID="NumericUpDownExtender2" runat="server"
??????????????????? TargetControlID="TextBox2" Width="120" RefValues="January;February;March;April;May;June;July;August;September;October;November;December"
??????????????????? ServiceDownMethod="" ServiceUpMethod="" TargetButtonDownID="" TargetButtonUpID="" />
?????????????????????? <ajaxToolkit:NumericUpDownExtender ID="NumericUpDownExtender4" runat="server"
??????????????????? TargetControlID="TextBox4" Width="80" TargetButtonDownID="img1"
??????????????????? TargetButtonUpID="img2" RefValues="" ServiceDownMethod="" ServiceUpMethod="" />
20. PagingBulletedList
【功能概述】
PagingBulletedList 擴(kuò)展BulletedList的分頁(yè)功能并實(shí)現(xiàn)客戶端的排序分頁(yè)。這里提供的分頁(yè)是相當(dāng)靈活的有各種分頁(yè)方法供選擇。
?? 【細(xì)節(jié)】
?(1)可以控制每頁(yè)最多顯示多少條,是否排序
?(2)IndexSize表示index headings 的字符數(shù),如果MaxItemPerPage設(shè)置了概屬性被忽略
?(3)MaxItemPerPage分頁(yè)每頁(yè)最大條數(shù)
【示意代碼】
代碼示意:
?<ajaxToolkit:PagingBulletedListExtender ID="PagingBulletedListExtender1" BehaviorID="PagingBulletedListBehavior1" runat="server"
??????????????????? TargetControlID="BulletedList1"
??????????????????? ClientSort="true"
??????????????????? IndexSize="1"
??????????????????? Separator=" - "
??????????????????? SelectIndexCssClass="selectIndex"
??????????????????? UnselectIndexCssClass="unselectIndex" />
21. PasswordStrength
【功能】
驗(yàn)證密碼強(qiáng)度,微軟Live注冊(cè)的時(shí)候就是用的這個(gè)效果。
【細(xì)節(jié)】
?StrengthIndicatorType兩種顯示方式:文字提示,進(jìn)度條提示。
示例中Textbox1 Textbox3都沒有添加TextMode="Password" 所以在界面上我們可以輸入中文;而且輸入中文很快就達(dá)到較高安全度,當(dāng)然這沒有什么用處。
【示意代碼】
代碼示意:
<ajaxToolkit:PasswordStrength ID="PasswordStrength1" runat="server" DisplayPosition="RightSide" TargetControlID="TextBox1"
??????????????????? StrengthIndicatorType="Text" PreferredPasswordLength="10" PrefixText="Strength:"
??????????????????? HelpStatusLabelID="TextBox1_HelpLabel" TextCssClass="TextIndicator_TextBox1"? TextStrengthDescriptions="Very Poor;Weak;Average;Strong;Excellent"
??????????????????? MinimumNumericCharacters="0" MinimumSymbolCharacters="0" RequiresUpperAndLowerCaseCharacters="false"/>
??? <ajaxToolkit:PasswordStrength ID="PasswordStrength2" runat="server" DisplayPosition="RightSide" TargetControlID="TextBox2"
??????????????????? StrengthIndicatorType="BarIndicator" PreferredPasswordLength="15" HelpStatusLabelID="TextBox2_HelpLabel"
???????????????????? BarIndicatorCssClass="BarIndicator_TextBox2" BarBorderCssClass="BarBorder_TextBox2"
???????????????????? MinimumNumericCharacters="1" MinimumSymbolCharacters="1" RequiresUpperAndLowerCaseCharacters="true" />
??? <ajaxToolkit:PasswordStrength ID="PasswordStrength3" runat="server" DisplayPosition="BelowLeft" TargetControlID="TextBox3"
??????????????????? StrengthIndicatorType="Text" PreferredPasswordLength="20" PrefixText="Meets Policy? " TextCssClass="TextIndicator_TextBox3"
???????????????????? MinimumNumericCharacters="2" MinimumSymbolCharacters="2" RequiresUpperAndLowerCaseCharacters="true"
???????????????????? TextStrengthDescriptions="Not at all;Very Low compliance;Low Compliance;Average Compliance;Good Compliance;Very High Compliance;Yes"
???????????????????? HelpHandleCssClass="TextIndicator_TextBox3_Handle" HelpHandlePosition="LeftSide" />
?
?
22.PopupControl
【功能概述】
PopupControl任何控件上都可以彈出任何內(nèi)容,跟HoverMenu功能類似。Popup 窗口一般是放在ASP.NET AJAX UpdatePanel中, 因此它能夠完成服務(wù)器端的處理之后更能新數(shù)據(jù)
顯示.? Popup Window 可以包含任何內(nèi)容包括 ASP.NET server controls, HTML elements, etc.
【細(xì)節(jié)】
(1)TargetControlID - The ID of the control to attach to
??????????????? (2)PopupControlID - The ID of the control to display
??????????????? (3)CommitProperty -屬性來(lái)標(biāo)識(shí)返回的值
??????????????? (4) CommitScript -把返回結(jié)果值通過腳本處理,用到CommitProperty
? 【代碼示意】
????? <ajaxToolkit:PopupControlExtender? ID="PopupControlExtender2" runat="server" TargetControlID="MessageTextBox"
????? PopupControlID="Panel2" CommitProperty="value" CommitScript="e.value += ' - do not forget!';" Position="Bottom" />
23.Rating
【功能概述】
使用星級(jí)表示等級(jí),鼠標(biāo)操作;
【細(xì)節(jié)】
鼠標(biāo)移動(dòng)等級(jí)也會(huì)變,而你真正要修改還要點(diǎn)擊一下;這是延續(xù)了WP10里面等級(jí)評(píng)定控件的傳統(tǒng),也許這樣設(shè)計(jì)是真的有道理,我不清除。
【示意代碼】
? 代碼示意:
?? <ajaxToolkit:Rating ID="ThaiRating" runat="server"
??? CurrentRating="2"
??? MaxRating="5"
??? StarCssClass="ratingStar"
??? WaitingStarCssClass="savedRatingStar"
??? FilledStarCssClass="filledRatingStar"
??? EmptyStarCssClass="emptyRatingStar"
??? OnChanged="ThaiRating_Changed" />
???
?
?
24.ReorderList
【功能概述】
ReorderList是一個(gè)全新的控件。它可以實(shí)現(xiàn)逐條列出數(shù)據(jù)并實(shí)現(xiàn)交互。用戶簡(jiǎn)單的拖拽就可以改變數(shù)據(jù)的排列順序并更新到數(shù)據(jù)源。在本控件中如果SortOrderField 屬性設(shè)置之后排序?qū)⒆詣?dòng)完成。
【細(xì)節(jié)】
(1)綁定數(shù)據(jù),拖動(dòng)數(shù)據(jù)之后數(shù)據(jù)將被更新到綁定源
??????????????? (2)它不是已有控件的擴(kuò)展是全新的服務(wù)器端控件,只是它對(duì)Ajax行為是敏感的
??????????????? (3)重排的實(shí)現(xiàn)有兩種方式:CallBack PostBack 前者的發(fā)生在頁(yè)面上是沒有PostBack的(也就是沒有刷新頁(yè)面)
??????????????? (4) 而數(shù)據(jù)添加或者編輯的時(shí)候就必須要使用PostBack來(lái)同步服務(wù)器端的數(shù)據(jù)狀態(tài)
??????????????? (5)PostbackOnReorder就是針對(duì)兩種策略進(jìn)行選擇
【示意代碼】
代碼示意:
?? <ajaxToolkit:ReorderList ID="ReorderList1" runat="server"
??? DataSourceID="ObjectDataSource1"
??? DragHandleAlignment="Left"
??? ItemInsertLocation="Beginning"
??? DataKeyField="ItemID"
??? SortOrderField="Priority"
??? AllowReorder="true">
????? <ItemTemplate> </ItemTemplate>
????? <ReorderTemplate> </ReorderTemplate>
????? <DragHandleTemplate> </DragHandleTemplate>
????? <InsertItemTemplate> </InsertItemTemplate>
</ajaxToolkit:ReorderList>
這個(gè)控件是非常獨(dú)立,并且還是適用于表現(xiàn)Buleted的數(shù)據(jù),二維數(shù)據(jù)就無(wú)能為例了
??????????? DataSourceID="ObjectDataSource1" 這是必須要有的!下面是它的Template框架:
? <ajaxToolkit:ReorderList ID="ReorderList1" PostBackOnReorder="false" runat="server" DataSourceID="ObjectDataSource1" CallbackCssStyle="callbackStyle"
??????? DragHandleAlignment="Left" ItemInsertLocation="Beginning" DataKeyField="ItemID" SortOrderField="Priority">
??????? <ItemTemplate></ItemTemplate>
??????? <EditItemTemplate></EditItemTemplate>
??????? <ReorderTemplate></ReorderTemplate>
??????? <DragHandleTemplate> </DragHandleTemplate>
??????? <InsertItemTemplate> </InsertItemTemplate>
??? </ajaxToolkit:ReorderList>
25. ResizableControl
【功能概述】
就像設(shè)計(jì)狀態(tài)一樣可以拖動(dòng)修改大小,可是有什么實(shí)際的意義么,放大字體?沒有想到
【 細(xì)節(jié)】
(1)?? HandleCssClass - The name of the CSS class to apply to the resize handle 這個(gè)屬性必須要有!
(2)?? WEB2.0時(shí)代用戶什么都是可以自定義的??難道是這個(gè)原則下的產(chǎn)物么??不理解
(3)?? 在前衛(wèi)的飛鴿網(wǎng)站上我都一直沒有看到關(guān)于ResizableControl的應(yīng)用,期待一個(gè)成功的應(yīng)用
【示意代碼】
? 代碼示意:
<ajaxToolkit:ResizableControlExtender ID="RCE" runat="server"
??? TargetControlID="PanelImage"
??? HandleCssClass="handleImage"
??? ResizableCssClass="resizingImage"
??? MinimumWidth="50"
??? MinimumHeight="20"
??? MaximumWidth="260"
??? MaximumHeight="130"
??? OnClientResize="OnClientResizeImage"
??? HandleOffsetX="3"
??? HandleOffsetY="3" />
???
26. RoundedCorners
【功能】
控件圓角純粹是控制外觀的了,什么時(shí)候?qū)徝榔诹诉€要改。據(jù)說(shuō)GUI風(fēng)格也是N年一輪回,這讓我想起來(lái)了一個(gè)27KB的QQ,命令行界面,真的是這樣么?穿孔紙帶據(jù)說(shuō)是第一代GUI,不會(huì)有一天真的回到那個(gè)時(shí)代吧?
?? 【細(xì)節(jié)】
?(1)還有一個(gè)非常非常細(xì)節(jié)的地方:你必須要設(shè)置 CssClass="roundedPanel"要不然不起作用
??????????????? (2) Radius設(shè)置弧度,默認(rèn)是5
??????????????? (3)只適用于容器 WebControl
?????? 【示意代碼】
代碼示意:
????????????? <ajaxToolkit:RoundedCornersExtender ID="rce" runat="server"???? TargetControlID="Panel1"???? Radius="6" />
27. Slider
【功能概述】
實(shí)現(xiàn)WinForm中的Slider控件效果,新浪論壇用來(lái)分頁(yè)了,還有的用來(lái)調(diào)整“時(shí)間----------|----熱度”,創(chuàng)意!
? 【細(xì)節(jié)】
(1)?? 修改文本框的值也可以影響Slider的狀態(tài)
【示意代碼】
? 代碼示意:
????????????? <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>?????????????????????????????
??? <cc1:SliderExtender ID="SliderExtender2" runat="server"
??????????????????????????????? BehaviorID="Slider2"
??????????????????????????????? TargetControlID="Slider2"
??????????????????????????????? BoundControlID="TextBox1"
??????????????????????????????? Orientation="Horizontal"
??????????????????????????????? EnableHandleAnimation="true"
???????????????????????????????? Minimum="0"
??????????????????????????????? Maximum="100"
??????????????????????????????? />
28. Tabs NEW!!!
Tabs是我認(rèn)為這一次新增控件中最實(shí)用的好東東,在編碼風(fēng)格上與所有嵌套式的控件一樣:
?????????? <ajaxToolkit:TabContainer runat="server"
??????? OnClientActiveTabChanged="ClientFunction"
??????? Height="150px">
??? <ajaxToolkit:TabPanel runat="server"
??????? HeaderText="Signature and Bio"
??????? <ContentTemplate>
??????????? ...
??????? </ContentTemplate>
??? />
</ajaxToolkit:TabContainer>
?Demo效果讓我們很容易想到最近改版之后的網(wǎng)頁(yè)主頁(yè)和新浪主頁(yè)和Accordion比較一下各有千秋,是對(duì)經(jīng)典WinForm的一種繼承。
?
29 .TextBoxWatermark
【功能概述】
對(duì)文本框進(jìn)行擴(kuò)展,文本水印效果。
看了幾十個(gè)WEB2.0的網(wǎng)站,沒想到,見到最多的就是這種水印效果,看來(lái)很受歡迎。
【示意代碼】
?代碼示意:
??? <asp:TextBox ID="TextBox1" CssClass="unwatermarked" Width="150" runat="server"></asp:TextBox>
??????????? <cc1:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server" TargetControlID="TextBox1" WatermarkText="請(qǐng)輸入用戶名" WatermarkCssClass="watermarked" />
?
30. ToggleButton
【功能概述】
就是把一個(gè)CheckBox的邏輯應(yīng)用到一個(gè)按鈕上,于是就有了雙態(tài)按鈕這么個(gè)玩意,有點(diǎn)意思啊
實(shí)際上示例頁(yè)面并沒有突出這個(gè)控件功能上的優(yōu)勢(shì),對(duì)這個(gè)控件的操作引起頁(yè)面上數(shù)據(jù)的更新,這才是CheckBox控件封裝成Button的最終原因。
?【示意代碼】
<asp:CheckBox ID="CheckBox1" Checked="true" Text="I like ASP.NET" runat="server"/>
??? <cc1:ToggleButtonExtender ID="ToggleButtonExtender1" runat="server" TargetControlID="CheckBox1" ImageWidth="19"
???? ImageHeight="19" UncheckedImageUrl="Image/down.gif" CheckedImageUrl="Image/up.gif" CheckedImageAlternateText="Check"
???? UncheckedImageAlternateText="UnCheck" />
31.UpdatePanelAnimation
【功能概述】
更新動(dòng)畫效果,個(gè)人認(rèn)為應(yīng)用于時(shí)間較短的場(chǎng)合,時(shí)間長(zhǎng)了這個(gè)動(dòng)畫就有點(diǎn)不合適了,畢竟這是一個(gè)過渡效果;時(shí)間長(zhǎng)還是UpdateProgress比較好。
?? 【細(xì)節(jié)】
代碼結(jié)構(gòu)簡(jiǎn)單但是要說(shuō)的東西很多,回頭再說(shuō)寫專題吧
代碼示意:
? <ajaxToolkit:UpdatePanelAnimationExtender ID="ae"
? runat="server" TargetControlID="up">
???? <Animations>
??????? <OnUpdating>?? </OnUpdating>
??????? <OnUpdated>?? </OnUpdated>
??? </Animations>
</ajaxToolkit:UpdatePanelAnimationExtender>
32. ValidatorCallout
【功能概述】
Windows系統(tǒng)中最常見的氣泡提示,比如你磁盤空間不足的時(shí)候。是對(duì)數(shù)據(jù)驗(yàn)證控件的擴(kuò)展,比較實(shí)用,頁(yè)面效果的確是比以前那個(gè)紅色的星號(hào)醒目多了!
【細(xì)節(jié)】
Errormessage是一個(gè)開放的屬性,我們可以進(jìn)行豐富的擴(kuò)展,大膽的想象,讓顯示出來(lái)的氣泡更有意義
代碼示意:
? <asp:RequiredFieldValidator runat="server" ID="PNReq" ControlToValidate="PhoneNumberTextBox" Display="None" ErrorMessage="<b>
? Required Field Missing</b><br />A phone number is required.<div style='margin-top:5px;padding:5px;border:1px solid #e9e9e9;background-color:white;'>
? <b>Other Options:</b><br /><a href='javascript:alert("No phone number available in profile.");'>Extract from Profile</a></div>" />
?
?? <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="PNReqE" TargetControlID="PNReq" HighlightCssClass="highlight" Width="350px" />
還有一段:
代碼示意:
?<asp:RequiredFieldValidator runat="server" ID="NReq" ControlToValidate="NameTextBox" Display="None" ErrorMessage="<b>Required Field Missing</b><br />A name is required." />
??????? <asp:RequiredFieldValidator runat="server" ID="PNReq" ControlToValidate="PhoneNumberTextBox" Display="None" ErrorMessage="<b>Required Field Missing</b><br />A phone number is required.<div style='margin-top:5px;padding:5px;border:1px solid #e9e9e9;background-color:white;'><b>Other Options:</b><br /><a href='javascript:alert("not implemented but you get the idea;)");'>Extract from Profile</a></div>" />
??????? <asp:RegularExpressionValidator runat="server" ID="PNRegEx" ControlToValidate="PhoneNumberTextBox" Display="None" ErrorMessage="<b>Invalid Field</b><br />Please enter a phone number in the format:<br />(###) ###-####" ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}" />
??????? <cc1:ValidatorCalloutExtender runat="Server" ID="NReqE" TargetControlID="NReq" HighlightCssClass="highlight" />
??????? <cc1:ValidatorCalloutExtender runat="Server" ID="PNReqE" TargetControlID="PNReq" HighlightCssClass="highlight" Width="350px" />
??????? <cc1:ValidatorCalloutExtender runat="Server" ID="PNReqEx" TargetControlID="PNRegEx" HighlightCssClass="highlight" />
33. ListSearchExtender
【功能概述】
支持對(duì)ListBox or DropDownList的擴(kuò)展通過用戶鍵入的字符對(duì)列表中的數(shù)據(jù)進(jìn)行過濾,在WinForm中做的更好一些。順便說(shuō)一下在winform里面以前在VS6.0的時(shí)代我們是怎么實(shí)現(xiàn)這個(gè)功能的呢?還記得嗎?Sendmessage函數(shù)向ListBox或者Combox發(fā)送Find_Text消息,很懷舊了
【細(xì)節(jié)】
1.????? PromptText屬性的作用有兩個(gè),一是顯示提示信息,省的用戶不知道還有這個(gè)功能。再者就是即時(shí)的顯示用戶輸入的數(shù)據(jù)。
2.????? 在Safari中DropDownList擴(kuò)展失效;Opera中后退鍵會(huì)被認(rèn)為要后退一頁(yè)!!!
3.????? 顯然這個(gè)控件如果還有什么要說(shuō)的就是可以設(shè)置Prompt信息的外觀(樣式+位置)
看代碼:
<ajaxToolkit:ListSearchExtender id="LSE" runat="server"??? TargetControlID="ListBox1"??? PromptText="Type to search"???? PromptCssClass="ListSearchExtenderPrompt"???? PromptPosition="Top" />34. Slider Show
【功能概述】
在Web2.0時(shí)代,博客是一個(gè)標(biāo)志,在博客上掛著的圖片幻燈片同樣成為一個(gè)標(biāo)記。
【細(xì)節(jié)】
1.首先它是對(duì)圖片控件的擴(kuò)展,之后的問題就是:我們要把圖片取出來(lái);下面是方法:SlideShowServiceMethod - The webservice method that will be called to supply images. The signature of the method must match this:
·???????????????????????????? [System.Web.Services.WebMethod]
·???????????????????????????? [System.Web.Script.Services.ScriptMethod]
??? public AjaxControlToolkit.Slide[] GetSlides() { ... }
1.????? 還要設(shè)置的就是Web Service 去圖片的路徑SlideShowServicePath
2.????? NextButtonID PlayButtonID PreviousButtonID PlayButtonText StopButtonText
PlayInterval ImageDescriptionLabelID Loop AutoPlay頭腦中想象著任何一個(gè)播放器,這些屬性就很容易理解了。
<ajaxToolkit:SlideShowExtender ID="SlideShowExtender1" runat="server"??? TargetControlID="Image1"??? SlideShowServiceMethod="GetSlides"??? AutoPlay="true"????? ImageDescriptionLabelID="imageLabel1"????? NextButtonID="nextButton"????? PlayButtonText="Play"????? StopButtonText="Stop"????? PreviousButtonID="prevButton"????? PlayButtonID="playButton"????? Loop="true" />
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/rmak2008/archive/2008/12/16/3530937.aspx
轉(zhuǎn)載于:https://www.cnblogs.com/MYGMVP/archive/2009/07/07/1518091.html
總結(jié)
以上是生活随笔為你收集整理的Ajax Control Toolkit 34个服务器端控件 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转:关于CCDISK的优化
- 下一篇: 奇怪-正则匹配的test函数