zoukankan      html  css  js  c++  java
  • 自己动手编写一个ajax extender

    该扩展的功能有以下几点:
    1、当鼠标移到某个按钮上时,该按钮显示一个Css样式;
    2、当鼠标移开该按钮时,该按钮显示另外一个Css样式;
    3、当鼠标点击该按钮时,执行一个用户自己定义的javascript函数;


    该extender共有以下三个文件:
    HoverButtonExtender.cs
    HoverButtonDesigner.cs
    HoverButtonBehavior.js
    其中HoverButtonDesigner.cs和HoverButtonBehavior.js的代码分别如下:

    HoverButtonBehavior.js
      1// (c) Copyright Microsoft Corporation.
      2// This source is subject to the Microsoft Permissive License.
      3// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
      4// All other rights reserved.
      5
      6
      7// README
      8//
      9// There are two steps to adding a property:
     10//
     11// 1. Create a member variable to store your property
     12// 2. Add the get_ and set_ accessors for your property.
     13//
     14// Remember that both are case sensitive!
     15//
     16
     17Type.registerNamespace('HoverButton');
     18
     19HoverButton.HoverButtonBehavior = function(element) {
     20
     21    HoverButton.HoverButtonBehavior.initializeBase(this, [element]);
     22
     23    // TODO : (Step 1) Add your property variables here
     24    //
     25    this._HoverButtonCssClass = null;
     26    this._UnHoverButtonCssClass = null;
     27    this._OnButtonClickScript = null;
     28    this._clickHandler = null;
     29    this._hoverHandler = null;
     30    this._unhoverHandler = null;    
     31
     32}

     33
     34HoverButton.HoverButtonBehavior.prototype = {
     35
     36    initialize : function() {
     37        HoverButton.HoverButtonBehavior.callBaseMethod(this, 'initialize');
     38        
     39        
     40        this._hoverHandler = Function.createDelegate(thisthis._onTargetHover);       
     41        this._unhoverHandler = Function.createDelegate(thisthis._onTargetUnhover);    
     42        if(this.get_element() && this._onButtonClick)
     43        {
     44            this._clickHandler = Function.createDelegate(this,this._onButtonClick);
     45            $addHandler(this.get_element(),'click',this._clickHandler);
     46        }

     47        this._hoverBehavior = $create(AjaxControlToolkit.HoverBehavior, {unhoverDelay:1, hoverElement: null}nullnullthis.get_element());
     48        this._hoverBehavior.add_hover(this._hoverHandler);
     49        this._hoverBehavior.add_unhover(this._unhoverHandler);  
     50        // TODO: add your initalization code here
     51    }
    ,
     52
     53    dispose : function() {
     54        // TODO: add your cleanup code here
     55         if (this._hoverBehavior) {
     56            this._hoverBehavior.dispose();
     57            this._hoverBeahvior = null;            
     58        }
            
     59        HoverButton.HoverButtonBehavior.callBaseMethod(this, 'dispose');
     60    }
    ,
     61
     62
     63    _onTargetHover : function(eventArgs)
     64    {
     65        var e = this.get_element();   
     66        Sys.UI.DomElement.removeCssClass(e, this._UnHoverButtonCssClass);     
     67        Sys.UI.DomElement.addCssClass(e, this._HoverButtonCssClass);
     68    }
    ,
     69    
     70        //onUnHover
     71    _onTargetUnhover: function(eventArgs)
     72    {
     73        var e = this.get_element();   
     74        Sys.UI.DomElement.removeCssClass(e, this._HoverButtonCssClass);     
     75        Sys.UI.DomElement.addCssClass(e, this._UnHoverButtonCssClass);
     76    }
    ,
     77    _onButtonClick: function(eventArgs)
     78    {
     79         if (this._OnButtonClickScript) {
     80                window.setTimeout(this._OnButtonClickScript, 0);
     81            }

     82    }
    ,
     83    // TODO: (Step 2) Add your property accessors here
     84    //
     85    get_HoverButtonCssClass : function() {
     86        return this._HoverButtonCssClass;
     87    }
    ,
     88
     89    set_HoverButtonCssClass : function(value) {
     90        this._HoverButtonCssClass = value;
     91    }
    ,
     92     get_UnHoverButtonCssClass : function() {
     93        return this._UnHoverButtonCssClass;
     94    }
    ,
     95
     96    set_UnHoverButtonCssClass : function(value) {
     97        this._UnHoverButtonCssClass = value;
     98    }
    ,
     99    
    100    set_OnButtonClickScript: function(value)
    101    {
    102        this._OnButtonClickScript = value;
    103    }
    ,
    104    
    105    get_OnButtonClickScript: function()
    106    {
    107        return this._OnButtonClickScript;
    108    }

    109}

    110
    111HoverButton.HoverButtonBehavior.registerClass('HoverButton.HoverButtonBehavior', AjaxControlToolkit.BehaviorBase);
    112

    这里注意一下第80行,window.setTimeout(this._OnButtonClickScript, 0); 这个_OnButtonClickScript是一个字符串,表示客户端页面上用户自己定义的一个函数的名字,通过这个语句就能够执行整个客户端函数。有了这样的机制,用户就能够自己定义按钮的响应函数了。
    HoverButtonExtender.cs

    // (c) Copyright Microsoft Corporation.
    // This source is subject to the Microsoft Permissive License.
    // See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
    // All other rights reserved.

    using System;
    using System.Web.UI.WebControls;
    using System.Web.UI;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using AjaxControlToolkit;
    using Microsoft.Web.UI;


    [assembly: System.Web.UI.WebResource(
    "HoverButton.HoverButtonBehavior.js""text/javascript")]

    namespace HoverButton
    {
        [Designer(
    typeof(HoverButtonDesigner))]
        [ClientScriptResource(
    "HoverButton.HoverButtonBehavior""HoverButton.HoverButtonBehavior.js")]
        [TargetControlType(
    typeof(Control))]
        [RequiredScript(
    typeof(HoverExtender))]
        [RequiredScript(
    typeof(CommonToolkitScripts))]
        
    public class HoverButtonExtender : ExtenderControlBase
        
    {
            
    // TODO: Add your property accessors here.
            
    //
            [ExtenderControlProperty]
            [DefaultValue(
    "")]
            
    public string HoverButtonCssClass
            
    {
                
    get
                
    {
                    
    return GetPropertyStringValue("HoverButtonCssClass");
                }

                
    set
                
    {
                    SetPropertyStringValue(
    "HoverButtonCssClass", value);
                }

            }


            [ExtenderControlProperty]
            [DefaultValue(
    "")]
            
    public string UnHoverButtonCssClass
            
    {
                
    get
                
    {
                    
    return GetPropertyStringValue("UnHoverButtonCssClass");
                }

                
    set
                
    {
                    SetPropertyStringValue(
    "UnHoverButtonCssClass", value);
                }

            }


            [ExtenderControlProperty]
            [DefaultValue(
    "")]
            
    public string OnButtonClickScript
            
    {
                
    get
                
    {
                    
    return GetPropertyStringValue("OnButtonClickScript");
                }

                
    set
                
    {
                    SetPropertyStringValue(
    "OnButtonClickScript", value);
                }

            }

            

        }

    }



    该扩展的使用,代码如下:
     1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
     2
     3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
     4<%@ Register Assembly="HoverButton" Namespace="HoverButton" TagPrefix="cc1"%>
     5
     6<html xmlns="http://www.w3.org/1999/xhtml">
     7<head runat="server">
     8    <link href="CSS/StyleSheet.css" rel="stylesheet" type="text/css" />
     9    <title>测试HoverButton</title>
    10</head>
    11<body>
    12    <form id="form1" runat="server">
    13        <asp:ScriptManager ID="ScriptManager1" runat="server" />
    14        <div>
    15            <asp:textbox id="TextBox1" runat="server"></asp:textbox>
    16            <asp:button id="Button1" runat="server" text="Button" />            
    17            <cc1:HoverButtonExtender runat="server" id="hbe" targetcontrolid="Button1"  HoverButtonCssClass="hoverbutton" unhoverbuttoncssclass="unhoverbutton"></cc1:HoverButtonExtender>
    18        </div>
    19    </form>
    20</body>
    21</html>
    22

    希望能对您有帮助。
  • 相关阅读:
    白盒测试 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖(转)
    白盒测试--基本路径测试法详细说明和举例
    测试用例编写规范
    EF数据库连接时候出错
    元祖,字典,列表及其内置方法
    字符串、列表练习’
    数字,字符串,列表及其内置方法
    流程控制代码练习
    易出错知识点
    流程控制if、while、for
  • 原文地址:https://www.cnblogs.com/strinkbug/p/599462.html
Copyright © 2011-2022 走看看