`

Ajax扩展控件

阅读更多

 

11.DragPanelExtender(拖拽控件)

补:擅用vs的转到定义功能可以提高效率,不光方法变量可以通过转到定义找到'原味',标签,控件的class,cssClass也可以在CSS里快速找到'原味'。vs里文件夹可以通过右键在'windows资源管理器里打开'。png的图片可以直接改成jpeg格式在图片浏览器里查看。CSS文件里的路径是相对于CSS文件而言,并非引用CSS文件的网页。

 

DragPanelExtender控件可以很轻松地实现拖拽控件的效果

主要代码:

 <div style="height: 300px; width: 250px; float: left; padding: 5px;" >

            <asp:Panel ID="Panel6" runat="server" Width="250px" style="z-index: 20;">
                <asp:Panel ID="Panel7" runat="server" Width="100%" Height="20px"
                    BorderStyle="Solid" BorderWidth="2px" BorderColor="black">
                        <div class="dragMe">Drag Me</div>
                </asp:Panel>
                <asp:Panel  ID="Panel8" runat="server" Width="100%" Height="250px"
                   BackColor="#0B3D73" ForeColor="whitesmoke"
                  BorderWidth="2px" BorderColor="black" BorderStyle="Solid" ScrollBars="Auto">
                        <div>
                   <p>This panel will reset its position on a postback or page refresh.</p>
                            <hr />
                            <p><%= GetContentFillerText() %></p>
                        </div>
                </asp:Panel>
            </asp:Panel>
        </div>    
    <ajax:DragPanelExtender ID="DragPanelExtender1" runat="server" TargetControlID="Panel6" DragHandleID="Panel7">
    </ajax:DragPanelExtender>
 

主要属性:

TargetControlID:要被拖拽的控件的ID,可以是任何控件

DragHandleID:拖拽控件的'把手'的ID,貌似只能是Panel控件

CSS:

.dragMe {

width:100%;

height:21px;

background-color:#FFF;

background-image:url(../images/drogpanel.png);

text-align:center;

cursor:move;

font-weight:bold;

            }

 

12.DropDownExtender(下拉控件)

该控件能在目标控件周围"套上"一个下拉控件(当鼠标经过时),当右击或左击这个出现的下拉控件后会激发下拉目标控件。目标控件与下拉目标控件可以为任意控件。

主要代码:

   目标控件

 <asp:Label ID="TextLabel" runat="server" Text="选择你喜欢的食物"

 Style="display: block; width: 250px;padding:3px; padding-right: 50px;font-family: Tahoma; font-size: 11px;" />

   下拉目标控件

<asp:Panel ID="Panel1" runat="server" style="display:none;" CssClass="ContextMenuPanel">

<asp:LinkButton ID="LinkButton1" runat="server" Text="番茄炒蛋" CssClass="ContextMenuItem" OnClick="YourChioce"></asp:LinkButton>

<asp:LinkButton ID="LinkButton2" runat="server" Text="叉烧饭" CssClass="ContextMenuItem" OnClick="YourChioce"></asp:LinkButton>

<asp:LinkButton ID="LinkButton3" runat="server" Text="腐竹牛肉" CssClass="ContextMenuItem" OnClick="YourChioce"></asp:LinkButton>

</asp:Panel>

   下拉控件

<ajax:DropDownExtender ID="DropDownExtender1" runat="server" 

TargetControlID="TextLabel"      目标控件ID

DropDownControlID="Panel1"    下拉目标控件ID

DropArrowBackColor="Blue" DropArrowWidth="30px"   设置下拉控件下拉箭头的样式

HighlightBackColor="ButtonHighlight" HighlightBorderColor="Red">   设置下拉控件主体样式

</ajax:DropDownExtender>

   UpdatePanel 更多关于UpdatePanel

<asp:UpdatePanel ID="UpdatePanel1" runat="server">

    <ContentTemplate>

        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

    </ContentTemplate>

    <Triggers>

    <asp:AsyncPostBackTrigger  ControlID="LinkButton1" EventName="Click"/>

    <asp:AsyncPostBackTrigger ControlID="LinkButton2" EventName="Click" />

    <asp:AsyncPostBackTrigger ControlID="LinkButton3" EventName="Click" />

    </Triggers>

    </asp:UpdatePanel>

 

后置代码:

 protected void YourChioce(object sender, EventArgs e)

        {

            Label1.Text = "你选择了<b>" + ((LinkButton)sender).Text+"</b>";

当多个(种)控件触发同一个事件时,可通过sender(当前触发该事件的控件的实例)来得到该控件,不过要清楚当前控件的类型

        }

CSS代码:

.ContextMenuPanel 

{

border: 1px solid #868686;

z-index: 1000;

background: url(../images/menu-bg.gif) repeat-y 0 0 #FAFAFA;

cursor: default;

padding: 1px 1px 0px 1px;

font-size: 11px;

}

a.ContextMenuItem  a是因为LinkButton到了客户端就是一个带js脚本事件的超链接

{

margin: 1px 0 1px 0;

display: block;

color: #003399;

text-decoration: none;

cursor: pointer;

padding: 4px 19px 4px 33px;

white-space: nowrap;

}

a.ContextMenuItem:hover     :hover伪类(更多关于css伪类)不只能加给a标签,它们可以加给任何控件

{

background-color: #FFE6A0;

color: #003399;

border: 1px solid #D2B47A;

padding: 3px 18px 3px 32px;

}

 

13.DropShadowExtender(阴影效果控件)

理论上该控件可以给任何控件添加阴影的效果,但实际效果却不怎么样,其给Panel控件加阴影的效果最佳,并且其还可以给Panel控件加上圆角的效果,并且可以设置这些效果会不会因为Panel控件的变大变小而失去效果。

<asp:Panel ID="Panel1" runat="server" CssClass="dropShadowPanel">

            <div style="padding:10px">  

                First Name: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />

                Last Name: <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />

            </div>

        </asp:Panel>

<ajax:DropShadowExtender ID="DropShadowExtender1" runat="server" 

            TargetControlID="Panel1" 

            Width="5"

            Rounded="true"

            Radius="6"

            Opacity=".75"

            TrackPosition="true">

    </ajax:DropShadowExtender>

主要属性:

TargetControlID(目标控件ID)

Width(所加阴影的宽度,单位是像素)

Opacity(所加阴影的透明度,0~1.0)

Rounded(是否添加圆角效果)

Radius(圆角的半径,单位是像素)

TrackPosition(目标控件大小等变化时阴影是否也跟着变)

CSS:

.dropShadowPanel 

{

width:300px;

background-color:#5377A9;

color:white;

font-weight:bold;

}

 

14.DynamicPopulateExtender(动态替换控件)

该控件能够调用返回值是字符串的WebService里的方法或页面方法,并且可以用这些字符串替换掉目标控件(只能是服务器控件)的里的内容(对于不同控件替换方式也不同,如Panel(直接替换Panel里的内容)Button(替换的是其客户端属性Value)Image(出错)),当然这些字符串如果是些特殊字符串如表示控件的字符串,效果就是以控件来替换,由于是用字符串替换,所以如果用表示服务器控件的字符串来替换不会得到想要的效果,因为客户端浏览器不认识这些服务器控件。

HTML代码:

  <label for="r0">

  <input type="radio" name="rbFormat" id="r0" value='G' onclick="updateDateKey(this.value);" checked="checked"/>

  Normal</label><br />   注意这里this.value的用法,如果像type="text"那样value值是可变的的话,这将非常方便

  <label for="r1"><input type="radio" name="rbFormat" id="r1" value='d' onclick="updateDateKey(this.value);" />

  Short Date</label><br />   关于label标签的for属性

  <label for="r2"><input type="radio" name="rbFormat" id="r2" value='D' onclick="updateDateKey(this.value);" />

  Long Date</label><br />

  <label for="r3"><input type="radio" name="rbFormat" id="r3" value='U' onclick="updateDateKey(this.value);" />

   UTC Date/Time</label><br />

<asp:Panel ID="Panel1" runat="server">当前时间</asp:Panel>

<input type="button" id="button1" value="替换" />      PopulateTriggerControlID控件,可以为客户端控件 

<ajax:DynamicPopulateExtender ID="DynamicPopulateExtender1" runat="server"

     BehaviorID="DPE"

     TargetControlID="Panel1"     目标控件ID,只能是服务器控件

      PopulateTriggerControlID="button1"     用户单击该控件时就会调用指定的ServiceMethod

      ServicePath="DynamicPopulate.asmx"

      ClearContentsDuringUpdate="true"

      ServiceMethod="GetString"

       UpdatingCssClass="dynamicPopulate_Updating">    当处于替换时目标控件的样式

</ajax:DynamicPopulateExtender>

JavaScript代码:

<script type="text/javascript">

function updateDateKey(value)

{

  $find("DPE").populate(value);  DynamicPopulate的populate方法,类似于AutoComplete的set_contextKey方法,只不过那里是间接设置webservice服务方法的某个参数值,而这里是调用webservice服务方法。

}

Sys.Application.add_load(function(){updateDateKey('G');});  用到了微软js类库里的方法,该句作用等于window.onload=function(){updateDateKey('G');}

</script>

webservices里的服务方法:

 [System.Web.Script.Services.ScriptService]

    public class DynamicPopulate1 : System.Web.Services.WebService

    {

       [WebMethod]

        public string GetString(string contextKey)  返回值与参数类型及参数不能改

        {

            System.Threading.Thread.Sleep(250);   人为延长一下方法执行时间

            string value = (contextKey == "U") ?

                DateTime.UtcNow.ToString() :

                String.Format("{0:" + contextKey + "}", DateTime.Now);

            return String.Format("<span style='font-family:courier new;font-weight:bold;'>{0}</span>", value);

        }

    }

http://www.cnblogs.com/abcdwxc/archive/2007/11/02/947155.html

http://blog.csdn.net/bentonite/archive/2010/01/03/5124559.aspx

 

15.FilteredTextBoxExtender(文本框过滤控件)

该控件能够限制文本框中输入的数据,Note that since this effect can be avoided by deactivating JavaScript, you should use this extender as a convenience for your users, but you must never expect that the data being sent to the server consists of "valid" chars only。

主要属性:

TargetControlID(目标TextBox控件ID)

FilterType(过滤类型Custom(自定义,默认),Numbers,LowercaseLetters,UppercaseLetters(可以同时定义多种类型,用逗号隔开))

以下三个属性是当FilterType过滤类型中有Custom自定义类型时有效

FilterMode(ValidChars(允许模式,默认)InvalidChars(禁止模式))  就是禁止下面的字符还是允许下面的字符

ValidChars(允许的字符 当FilterType有Custom&&FilterMode=ValidChars时有效)

InvalidChars(禁止的字符 当FilterType有Custom&&FilterMode=InvalidChars时有效)

当InvalidChars禁止的字符与除Custom外的其他类型冲突时,以InvalidChars为准。如FilterType=Custom,Numbers  却禁止了123a,这时是不能输入123的,当然a更输入不了了。

当ValidChars允许的字符与除Custom外的其他类型冲突时,取并集。如FilterType=Custom,Numbers  却允许abc,这时可以输入abc,当然数字也可以输入。

总之,禁止的一定禁止,允许的一定允许。

  只能输入数字<asp:TextBox ID="TextBox1" runat="server"/>

  <ajax:FilteredTextBoxExtender ID="TextBox1_FilteredTextBoxExtender" 

   runat="server" Enabled="True" FilterType="Numbers"  

   TargetControlID="TextBox1">

    </ajax:FilteredTextBoxExtender><br />

  只能输入大写字母<asp:TextBox ID="TextBox3" runat="server"/>

   <ajax:FilteredTextBoxExtender ID="TextBox3_FilteredTextBoxExtender" 

    runat="server" Enabled="True" TargetControlID="TextBox3" 

    FilterType="UppercaseLetters">

    </ajax:FilteredTextBoxExtender><br />

  只能输入+-*/跟小写字母<asp:TextBox ID="TextBox2" runat="server"/>

    <ajax:FilteredTextBoxExtender ID="TextBox2_FilteredTextBoxExtender" 

     runat="server" Enabled="True" TargetControlID="TextBox2" 

     FilterType="Custom, LowercaseLetters" ValidChars="+-*/">

    </ajax:FilteredTextBoxExtender><br/>

  不允许说脏话<asp:TextBox ID="TextBox4" runat="server"/>

    <ajax:FilteredTextBoxExtender ID="TextBox4_FilteredTextBoxExtender" 

     runat="server" Enabled="True" TargetControlID="TextBox4" 

     FilterType="Custom" FilterMode="InvalidChars" InvalidChars="操日死狗娘">

    </ajax:FilteredTextBoxExtender><br />

http://book.51cto.com/art/201007/214021.htm

 

 

16.ListSearchExtender(列表搜索控件)

http://blog.csdn.net/yanxiaodi/archive/2010/07/17/5742811.aspx

该控件可以帮助你快速搜索在ListBox或DropDownList中的选项

 <asp:ListBox ID="ListBox1" runat="server" Width="106px">

        <asp:ListItem>我爱你</asp:ListItem>

        <asp:ListItem>你爱我</asp:ListItem>

        <asp:ListItem>她爱他</asp:ListItem>

        <asp:ListItem>中国</asp:ListItem>

    </asp:ListBox>

    <ajax:ListSearchExtender ID="ListBox1_ListSearchExtender" runat="server" 

        Enabled="True" TargetControlID="ListBox1" PromptCssClass="ListSearchExtenderPrompt"

        PromptText="输入文字搜索选项" QueryTimeout="2000" QueryPattern="StartsWith">

    </ajax:ListSearchExtender><br /><br />

    <asp:DropDownList ID="DropDownList1" runat="server" Width="130px">

        <asp:ListItem>台湾</asp:ListItem>

        <asp:ListItem>香港</asp:ListItem>

        <asp:ListItem>澳门</asp:ListItem>

        <asp:ListItem>拉斯维加斯</asp:ListItem>

    </asp:DropDownList>

    <ajax:ListSearchExtender ID="DropDownList1_ListSearchExtender" runat="server" 

        Enabled="True" TargetControlID="DropDownList1" PromptCssClass="ListSearchExtenderPrompt"

        PromptText="输入文字搜索选项" QueryTimeout="3000" QueryPattern="Contains">

    </ajax:ListSearchExtender>

CSS:

.ListSearchExtenderPrompt

{

   font-family:微软雅黑;

   color:Red; 

   background-color:white;

}

主要属性:

TargetControlID(目标ListBox或DropDownList控件的ID)

PromptCssClass(提示框的css样式类)

PromptText(提示文字)

QueryTimeout(如果没有搜到过多久提示框里的文字消失,单位毫秒)

QueryPattern(搜索模式是以文字开始模式还是包括文字模式)

遗憾的是该控件目前还不支持中文!!

 

17.MaskedEditExtender(格式化输入控件)与MaskedEditValidator(格式化输入验证控件)

该控件可以拓展一个TextBox控件,使得该TextBox控件只能被输入某些格式的文本。

很重要的一个属性是Mask(规定格式,在规定时需要使用一些微软规定的字符来代表某一类字符,如9代表数字,L代表字母(注意L的大小写)$代表字母或空格C代表任意字符A代表字母N代表数字?代表任意字符)一般标点符号都可以写在该属性里,但要注意\是转义符。

MaskType(格式类型,None,Number,Date,Time,DateTime,当设为None时,当要获取文本框的值时是不会连标点符号也获取的,每种类型都有自己可获取的标点符号,Number是,. 而其他时间类型是:-/等,不过我试了其他符号有些标点符号也可以被时间类型获取如|等,其他标点符号都会被忽略)

PromptChararacter(没有输入完时的提示字符(占位符)默认是_)

DisplayMoney(在左边还是右边显示货币符号,前提是MaskType设置为Number)

AcceptAMPM(是否显示AM或PM,前提是MaskType设置为DateTime或Time)

OnInvalidCssClass(当验证失败时TextBox的样式类,这个效果需要使用MaskedEditValidator验证控件)

感觉MaskedEditValidator验证控件不如使用ASP.NET本来就有的验证控件方便,所以就不说了,下面链接有涉及,不过均有不完整就部分错误。

http://www.cnblogs.com/xlovey/archive/2007/11/11/955636.html

http://hi.baidu.com/wujuguang/blog/item/8271bbef4d109912fdfa3ca3.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics