Ajax Control Toolkit 34个服务器端控件第1/2页

1. Accordion
【功能概述】
Accordion可以让你设计多个panel 并且一次只显示一个Panel .在页面上的显示效果就像是使用了多个CollapsiblePanels只不过每一次只展开其中一个CollapsiblePanel.Accordion控件内部包含了若干个AccordionPane,每一个AccordionPane的template里包括了对其Header和Content的定义。我们可以在后台代码中通过SelectedIndex属性取得当前展开的哪一个Panel,还可以控制哪一个Panel展开。
经常可以见到类似的效果,比如QQ、Msn好友分类的折叠效果。
【细节】
(1)不要把Accordion放在Table中而又把 FadeTransitions 设置为True,这将引起布局混乱
(2) 在AccordionPane模板中的Content中可以定义任何Web元素,表现的就像一个容器
(3) AccordionPane内容模板自动改变大小有三种AutoSize modes :None(推荐) Limit Fill
(4) $find('ctl00_ContentPlaceHolder1_MyAccordion_AccordionExtender')这里找到的是Behavior.什么是Behavior呢?在Asp.net Ajax框架中包含一组动作并完成一个功能. Accordion的一个Behavior就是淡入淡出.
找到Behavior的引用,behavior.set_FadeTransitions() behavior.get_FadeTransitions()的方式来实现具体某一个Behavior的访问和修改.
var behavior = $find('ctl00_SampleContent_MyAccordion_AccordionExtender');这种写法是不好的,我们在自动测试的页面中发现了更好的写法: 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="" onclick="return false;" class="accordionLink">1. Accordion</a></Header>
<Content>
</Content>
</AjaxToolkit:AccordionPane>
</Panes>
</AjaxToolkit:Accordion>
2. AlwaysVisibleControl
【功能概述】
AlwaysVisibleControl 是一个简单的扩展控件可以让一部分内容浮动在页面上,当滚动页面或者改变浏览器大小时总是可见的。它可以扩展任意一个Asp.net 控件,并可按照要求设置水平 竖直方向上的相对距离.
最多的应用是在线阅读的目录和不胜其烦的浮动小广告。
【细节】
(1) 避免控件闪烁,要扩展的控件要使用absolutely position
(2) HorizontalSide="Center" VerticalSide="Top" 使用这个方式控制浮动的位置
(3) Var label = ocument.getElementById('ctl00_SampleContent_currentTime');这行代码我们可以使用更简单的方法:
var label = $get('ctl00_SampleContent_currentTime');
【代码示意】
代码示意:
<cc1:AlwaysVisibleControlExtender ID="AlwaysVisibleControlExtender1" HorizontalSide="Center" VerticalSide="Top" TargetControlID="Panel1" runat="server">

3. Animation
【功能概述】
28个控件种效果最酷的!顾名思义实现动画效果。它是一个插入式,可扩展的框架可以方便的为你的页面添加动画效果。
【细节】
请参考页面代码阅读下面的细节内容:
(1)Sys.UI.DomElement.getLocation(b) 取得控件位置的函数,常用!!!
(2)动画分为两种:Animation Action 后者的强大让我很兴奋
(3)<Sequence> </Sequence> 顺序执行的动画脚本
(4)<Parallel> <Parallel > 并发执行的动画脚本
(5)【Action】 <StyleAction AnimationTarget="btnCloseParent" Attribute="opacity" value="0" /> 控制目标元素外观样式,属性--值的格式修改,一个元素可以应用多个StyleAction
(6)【Action】<EnableAction AnimationTarget="ctl00_ContentPlaceHolder1_btnInfo" Enabled="true" /> 控件是否可用使用的方式跟上面是一样的,当前控件可省略AnimationTarget
(7)【Action】 <ScriptAction Script="Cover($get('ctl00_ContentPlaceHolder1_btnInfo'), $get('flyout'));" />执行一段脚本的Action
(8) 【Action】 <HideAction />隐藏目标的控件
(9) 【Action】<OpacityAction AnimationTarget="info" Opacity="0" /> 设置透明度的Action
(10)【Animation】 <FadeIn AnimationTarget="info" Duration=".2"/> <FadeOut /> 淡入淡出
(11)【Animation】<Scale ScaleFactor="0.05" Center="true" ScaleFont="true" FontUnit="px" /> 控制目标元素的大小但是注意: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" /> 脉搏跳动效果
(13)【Animation】 <Color Duration=".2" StartValue="#FFFFFF" EndValue="#FF0000" Property="style" PropertyKey="color" /> 颜色渐变效果,设置起始结束颜色就可以
(14) 【Animation】 <Resize Width="260" Height="280" />改变元素的大小Action
(15)动画效果是在用户某一个动作发生的时候触发,触发的时机包括:OnLoad OnClick OnMouseOver OnMouseOut OnHoverOver OnHoverOut
正式版的页面文件为动画脚本添加了注释更加清晰易懂.上面列出的是常用的一些动画效果,全部资料参见Anmation Reference。
仔细阅读Animation的页面代码,其实我们已经提前触摸到了Xaml的编程风格。Asp.net Ajax之后的下一代WEB界面是WPF/E,WPF/E现在支持的是”javascript+Xaml” 还不支持”C# + Xaml”。
下一代的WEB UI会是怎样的?下一个版本的Asp.net 会怎样安排Ajax的位置?WPF/E会不会被整合在新版本的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控件是对Asp.net文本框控件的扩展,当用户词汇前面的字母时以弹出区域的形式给出备选词。这个功能的完成依赖于特定的Web Service。
在正式版的Ajax Control Toolkit中看到自动完成扩展控件有一种感觉:它终于出现在了它应该出现的地方。之前AutoComplete控件是在CTP版本中以核心组件的形式出现的,这个功能极为明确的控件被归类到核心组件,我还是比较迷惑。正式版中它终于成为了一个扩展控件。
Google的自动完成功能,新浪 网易等信箱的收件人自动完成功能是这个功能的成功应用。
【细节】
从Atlas的版本开始,AutoComplete的使用方法就没有太大的改变,只要注意:
(1)调用的Web Service方法签名有要求:
[WebMethod]
public string[] GetCompletionList(string prefixText, int count) { ... }
(2)MinimumPrefixLength最短前缀字符数,就是说你至少要键入几个字符才会出现提示
5. Calendar NEW!!!
【功能概述】
Calendar同样是对文本框的扩展,当点击文本框的时候弹出日期选择选项。现在的版本提供的功能已经和WinForm中的日期控件一样,可以通过点击日期选择,点击箭头在年月之间切换。
【细节】
(1)同样是对文本框的扩展,文本框获得焦点就会出现日期选择,样式是可以自定义的
(2)虽然一定是对文本框的扩展但是我们还是可以指定弹出按钮PopupButtonID,一旦这个值设定了,文本框获得焦点也不会弹出日期选择
(3)不需要把它放在UpdatePanel中
6. CascadingDropDown
【功能概述】
CascadingDropDown 控件是对ASP.NET DropDownList control的扩展,实现对一个DropDownList操作时其它DropDownList发生相应的变化。这个功能的实现依赖于Web Service。
【细节】
(1)如果使用Web service 方法签名必须符合下面的形式:
[WebMethod]
public CascadingDropDownNameValue[] GetDropDownContents(
string knownCategoryValues, string category){...}
(2)在阅读代码的时候请关注:Category属性。官方说法The name of the category this DropDownList represents 实打开~/App_Data/CarsService.xml你就发现这是Xml的元素标签。从这个角度我们就解决了为什么联动,即联动的本质;同时也明白了调用Service的参数约定。
【示意代码】
<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"/>
另外页面上还有一段定义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
【功能概述】
这个控件几乎在每一个页面上都出现了。它是非常灵活的一个控件,可以扩展任何ASP.NET Panel control。在页面上轻松实现展开收缩效果。这种效果我们最熟悉的恐怕就是XP的文件任务栏了。
【细节】
(1) CollapsiblePanel 默认认为使用了 标准 CSS box model 早期的浏览器要!DOCTYPE 中设置页面为自适应方式提交数据rendered in IE's standards-compliant mode.
(2) 可以自动展开 自动收缩Autoexpand="true" AutoCollapse="true"但是这两个本身是互斥的不能同时为True;如果设置了这两个属性其中一个为True就不要在设置 Collapsed="True",这样就没有意义了。
(3) TextLabelID="Label1"这个属性有什么深意\高级的操作么?我还在研究。。。
代码示意:
<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
【功能概述】
这个控件是对Button和继承了Button的控件的扩展,它可以捕捉到用户点击了对话框中的“是”“否”;如果是“是”就继续执行后面的代码,反之就停止执行它默认的提交行为。
【细节】
(1) 要扩展的LinkButton Button 以及ConfirmButtonExtender都要放在updatepanel里面
如果是放在外面,点击“确定”或者“取消”之后还是会导致页面刷新!
(2)更简单的方法:
this.Button1.Attributes["onclick"]="javascript:return confirm('确定要停止下载么?');";
(3) 如果是需要服务器端获取用户选择,还是使用模式弹出吧
9.DragPanel
【功能概述】
DragPanel extender可以轻松的让控件 "draggability".DragPanel 扩展的目标是任意 ASP.NET Panel .你可以设置拖动行为的细节,比如哪里是类似于标题栏一样的区域。
【细节】
(1) TargetControlID 要拖动的控件
(2) DragHandleID 拖动的标题栏所在的ControlID 示例代码中: panel6包含panel7(标题) panel8(内容)扩展的对象是panel6
(3) 是不是发现这段JS代码了呢?如果去掉这段代码,图到页面边缘的时候是不正常的,它自己跑回原来位置了 :)
<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 同样是一个 ASP.NET Ajax extender 可以对任何 ASP.NET control 进行扩展实现 SharePoint-style drop-down menu效果。弹出的只不过是其它的panel或者控件而已。 在IE浏览器中下拉列表总是在最前面的,的确是影响页面效果,这个控件的出现可以解决这一问题.这随时随地的弹出窗口成为WEB 2.0网站的标志性建筑,弹出的东西也越来越丰富。
【细节】
(1)TargetControlID要在什么控件上实现扩展
(2)DropDownControlID弹出来什么
(3) 示例中是对一个Label进行的扩展,我试着扩展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" />
还有一段代码有很多可以学习的地方:
代码示意:
<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
【功能概述】
阴影效果
【 细节】
(1) Width 单位:px 默认5px
(2) Opacity 不透明度0-1.0 默认.5
【示意代码】
代码示意:
<AjaxToolkit:DropShadowExtender ID="dse" runat="server"
TargetControlID="Panel1"
Opacity=".8"
Rounded="true"
TrackPosition="true" />
12. DynamicPopulate
【功能概述】
能实用Web Service或页面方法来动态的替换控件的内容。调用的方法返回的是一个Html的字符串,作为目标元素的子节点插入其中。
【 细节】
(1)ClearContentsDuringUpdate 替换之前先清除以前的内容(默认True)
(2)PopulateTriggerControlID 触发器绑定的控件 单击时触发
(3)ContextKey传递给Web Service的随机字符串
(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) 我们非常欣慰的一点就是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> //要扩展的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);// 内部实现调用了Service
}
}
Sys.Application.add_load(function() {updateDateKey('G');}); //页面加载时要执行的脚本!
</script>
13. FilteredTextBox
【功能概述】
FilteredTextBox扩展控件用来阻止用户在文本框输入无效字符 。由于这种效果的实现是依赖于deactivating JavaScript(怎么翻译呢?),所以不要期望数据会发送到服务器端进行校验。
【细节】
(1)过滤条件Numbers LowercaseLetters UppercaseLetters Custom
(2)过滤条件也可以是Custom的组合 FilterType="Custom, Numbers"
(3)ValidChars="+-=/*()." Custom要定义这样的有效字符串
(4)这个控件我认为是聊胜于无,我们要把允许输入的数据进行枚举,太难了。事实上,这个控件在任何状态下都是接受中文的。如果使用正则表达式情形或许好些。看它的实现代码还有进一步改进的可能,学习研究中……
【示意代码】
示意代码:
<AjaxToolkit:FilteredTextBoxExtender ID="ftbe" runat="server"
TargetControlID="TextBox3"
FilterType="Custom, Numbers"
ValidChars="+-=/*()." />
在该控件的实现代码中我发现了这样一段,这可能是一个突破口:
特殊键排除代码:
< 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控件可以扩展任何 ASP.NET WebControl, 同时将把附加的显示内容关联到该控件上,当用户移动鼠标到该控件的时候附加的内容将显示出来。
【细节】
(1) PopupControlID要弹出来什么
(2)PopupPostion 在哪里弹出来Left (Default), Right, Top, Bottom, Center.
(3)OffsetX/OffsetY 弹出项与源控件的距离
(4) PopDelay 弹出延时显示 单位milliseconds. Default is 100.
【代码示意】
代码示意:
<AjaxToolkit:HoverMenuExtender ID="hme2" runat="Server"
TargetControlID="Panel9"
HoverCssClass="popupHover"
PopupControlID="PopupMenu"
PopupPosition="Left"
OffsetX="0"
OffsetY="0"
PopDelay="50" />
示例页面上还有一个小细节:
HttpUtility.HtmlEncode()使用 HttpUtility.HtmlEncode 将危险的符号转换为它们的 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 控件是对TextBox control的扩展.用户输入会在客户端进行验证。在示例页面中,我感觉实际效果并不是太好所以没有深入学习,不多说了。
16. ModalPopup
【功能概述】
ModalPopup 扩展控件允许在页面上模式弹出内容并阻止用户和页面上其他区域的交互。模式弹出区域的样式都是可以自定义的。 用户可以在模式弹出框选择OK/Cancel,对用户选择的处理方式有两种:使用客户端脚本或者PostBack到服务器端。这样我们就得到了用户的选择结果!
【细节】
(1) 看下面的代码可以看到执行客户端脚本的方法。
(2) 应该说这个控件是提供了一个模式弹出对话框的模板
(3) 在正式版以前的所有版本,这个控件在Opear浏览器中都是不正常的。正式版已经修正这个BUG,现在正在比较学习两个版本的源代码,看看问题的原因和解决方法是什么。
【示意代码】
代码示意:
<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 >确定要删除当前下载的任务么?</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
【功能概述】
互斥复选框就像RadioButton一样,应用的场景是:“a number of choices are available but only one can be chosen”
【细节】
(1)Key属性用来分组就像RdiolistGroup一样
(2)argetControlID用来绑定已有的CheckBox
【代码示意】
<AjaxToolkit:MutuallyExclusiveCheckboxExtender runat="server"
ID="MustHaveGuestBedroomCheckBoxEx"
TargetControlID="MustHaveGuestBedroomCheckBox"
Key="GuestBedroomCheckBoxes" />

当前1/2页 12下一页阅读全文

(0)

相关推荐

  • Ajax Control Toolkit 34个服务器端控件第1/2页

    1. Accordion [功能概述] Accordion可以让你设计多个panel 并且一次只显示一个Panel .在页面上的显示效果就像是使用了多个CollapsiblePanels只不过每一次只展开其中一个CollapsiblePanel.Accordion控件内部包含了若干个AccordionPane,每一个AccordionPane的template里包括了对其Header和Content的定义.我们可以在后台代码中通过SelectedIndex属性取得当前展开的哪一个Panel,还可

  • ASP.NET 动态写入服务器端控件第1/2页

    关于动态写入html标签控件,大家都熟悉,这里就不再表述.本文讨论的重点是:如何动态写入服务器端控件,并且在页面PostBack到Server端时,在Server端来获取被动态写入的服务器端控件的各种属性. 这里,我来通过一个Demo来说明这个应用. 需求: 1. 用户在UI上输入一个数值(比如:5),系统动态为用户加载这个数值的Url Address输入域; 2. 用户输入的Url Address内容需要通过Url格式验证; 3. 用户提交输入内容后,系统给出提交的结果 设计如下: 1. Cs

  • Ajax Control Toolkit BalloonPopup的使用实例及效果

    Ajax Control Toolkit 工具包的简介及获取方式等,请参见本系列的另一篇随笔:Ajax Control Toolkit使用实例(1) AutoCompleteExtender. BalloonPopup 控件简介 BalloonPopup 控件可以显示一个弹出层,里面可以包含很多内容.例如,当用户将鼠标移动到一个文本框上时,可以使用此控件为用户显示一些帮助信息. BalloonPopup 控件支持三种样式(BalloonStyle):气球样式(Balloon).矩形样式(Rect

  • ASP.NET服务器端控件RadioButtonList,DropDownList,CheckBoxList的取值、赋值用法

    这三个控件都有一个Items集合,可以用 RepeatLayout 和 RepeatDirection 属性来控制列表的呈现形式.如果 RepeatLayout 的值为 Table,那么将在表中呈现列表.如果设置成 Flow,那么将在没有任何表结构的情况下呈现列表.默认情况下,RepeatDirection 的值为 Vertical.将此属性设置成 Horizontal 将会使列表水平呈现. RadioButtonList:控件提供已选中一个选项的单项选择列表(数据源单选).与其他列表控件相似,

  • jquery dialog open后,服务器端控件失效的快速解决方法

    jquery dialog为我们提供了非常漂亮实用的对话框,比单调的alert.confirm.prompt好用很多. 在使用jquery与.net共同开发时,直接调用jquery dialog的open后,服务器端控件全部失效了,不能执行相应的后台代码.只是源于jquery默认把dialog添加到body中,而不是原来所在的服务器端的form中了 解决方法: 1.可以调用dialog的open前,$("#dialog").parent().appendTo("form:fi

  • Javascript & DHTML上传文件控件第1/4页

    上章基本上把要交代的基本知识都说了一些,今天终于开始写代码了:D 首先来做一个实例,批量上传的UI控件.以后一般做的示例也是以UI控件为主的.都是封装成Object或者用Function封装成"Class"类. 也许对于单单看前几章的朋友来说这个例子过于深奥了,但是不用担心,一步步来解释应该很快理解的,关键是理解怎么做,而不是怎么写. 首先看一个成品截图预览: 一.接下来我们先说思路,首先定义一个upload"类", 一).这个类的公共访问信息应该有: 1.构造函数

  • jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值

    -.获取dropdownlist的text(ddlList为服务器端dropdownlist的ID,生成name属性等于ddlList的select标签) $("#ddlList option:selected").text() 二.获取dropdownlist的value(ddlList为服务器端dropdownlist的ID,生成name属性等于ddlList的select标签) $("#ddlList").val() 三.获取radiobuttonlist的t

  • javascript获得服务器端控件的ID的实现代码

    复制代码 代码如下: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/T

  • 激活 ActiveX 控件

    激活 ActiveX 控件 发布日期: 2006-3-29 | 更新日期: 2006-3-29 Internet 开发索引 用户不能与 APPLET.EMBED 或 OBJECT 元素加载的 Microsoft ActiveX 控件直接交互.用户激活这些控件的用户界面后才可以与这些控件交互.本文介绍 Microsoft Internet Explorer 如何处理 ActiveX 控件,显示如何加载 ActiveX 控件才能激活它们的界面,还描述这种行为对辅助工具和宿主 WebBrowser 控

  • 使用ASP.NET 2.0 CSS 控件适配器生成CSS友好的HTML输出

    [原文地址] Tip/Trick: Use the ASP.NET 2.0 CSS Control Adapters for CSS friendly HTML output [原文发表日期] Wednesday, November 29, 2006 11:01 PM 厌烦了内置的ASP.NET服务器端控件生成 HTML <table> 元素,而希望你能使用纯粹的CSS方案?如果是这样,读下去... 上个星期,我们发布了ASP.NET 2.0 CSS 控件适配器的1.0正式版.这些适配器利用了

随机推荐