亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用MS AJAX 擴展服務器端控件

2019-11-18 16:41:38
字體:
來源:轉載
供稿:網友

通過MS Ajax可以擴展一個服務器端控件在客戶端呈現后的特性,使其界面更加友好。
        實例代碼:IScriptControl.rar
        一、創建網站,選擇asp.net AJAX-Enabled Web Site.
        二、向項目中添加一個類,使其派生自TextBox,并實現IScriptControl接口。如下代碼實例:


public class SampleTextBox : TextBox, IScriptControl

         三、這個控件我們將實現兩個屬性:
               HighlightCSSClass         控件得到焦點后的樣式。當控件得到焦點的時候使其能夠高亮顯示。
               NoHighlightCssClass     失去焦點的控件的樣式。


public string HighlightCssClass
        {
            get { return _highlightCssClass; }
            set { _highlightCssClass = value; }
        }

        public string NoHighlightCssClass
        {
            get { return _noHighlightCssClass; }
            set { _noHighlightCssClass = value; }
        }

        四、接口IScriptControl 的實現。
               GetScriptDescriptors()    返回一個包含控件客戶端實例的屬性和事件句柄的 ScriptDescriptor 類型的數組。
               GetScriptReferences()    返回一個包含控件客戶端 javaScript 代碼的ScriptReference 類型的數組。
               在這個實例中,我們用四個函數來實現這兩個函數。代碼入下:
PRotected virtual IEnumerable<ScriptReference> GetScriptReferences()
        {
            ScriptReference reference = new ScriptReference();
            reference.Path = ResolveClientUrl("SampleTextBox.js");

            return new ScriptReference[] { reference };
        }

        protected virtual IEnumerable<ScriptDescriptor> GetScriptDescriptors()
        {
            ScriptControlDescriptor descriptor = new ScriptControlDescriptor("Samples.SampleTextBox", this.ClientID);
            descriptor.AddProperty("highlightCssClass", this.HighlightCssClass);
            descriptor.AddProperty("nohighlightCssClass", this.NoHighlightCssClass);

            return new ScriptDescriptor[] { descriptor };
        }

        IEnumerable<ScriptReference> IScriptControl.GetScriptReferences()
        {
            return GetScriptReferences();
        }

        IEnumerable<ScriptDescriptor> IScriptControl.GetScriptDescriptors()
        {
            return GetScriptDescriptors();
        }        五、這冊控件。代碼比較簡單,所以就不再多加講述,入下:
protected override void OnPreRender(EventArgs e)
        {
            if (!this.DesignMode)
            {
                // Test for ScriptManager and register if it exists
                sm = ScriptManager.GetCurrent(Page);

                if (sm == null)
                    throw new HttpException("A ScriptManager control must exist on the current page.");

                sm.RegisterScriptControl(this);
            }

            base.OnPreRender(e);
        }

        protected override void Render(HtmlTextWriter writer)
        {
            if (!this.DesignMode)
                sm.RegisterScriptDescriptors(this);

            base.Render(writer);
        }
         六、下邊是我們新添加的類的完整代碼:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

namespace TextBoxExtender
{
    /**//// <summary>
    /// SampleTextBox 的摘要說明
    /// </summary>
    public class SampleTextBox : TextBox, IScriptControl
    {
        private string _highlightCssClass;
        private string _noHighlightCssClass;
        private ScriptManager sm;

        public string HighlightCssClass
        {
            get { return _highlightCssClass; }
            set { _highlightCssClass = value; }
        }

        public string NoHighlightCssClass
        {
            get { return _noHighlightCssClass; }
            set { _noHighlightCssClass = value; }
        }

        protected override void OnPreRender(EventArgs e)
        {
            if (!this.DesignMode)
            {
                // Test for ScriptManager and register if it exists
                sm = ScriptManager.GetCurrent(Page);

                if (sm == null)
                    throw new HttpException("A ScriptManager control must exist on the current page.");

                sm.RegisterScriptControl(this);
            }

            base.OnPreRender(e);
        }

        protected override void Render(HtmlTextWriter writer)
        {
            if (!this.DesignMode)
                sm.RegisterScriptDescriptors(this);

            base.Render(writer);
        }

        protected virtual IEnumerable<ScriptReference> GetScriptReferences()
        {
            ScriptReference reference = new ScriptReference();
            reference.Path = ResolveClientUrl("SampleTextBox.js");

            return new ScriptReference[] { reference };
        }

        protected virtual IEnumerable<ScriptDescriptor> GetScriptDescriptors()
        {
            ScriptControlDescriptor descriptor = new ScriptControlDescriptor("Samples.SampleTextBox", this.ClientID);
            descriptor.AddProperty("highlightCssClass", this.HighlightCssClass);
            descriptor.AddProperty("nohighlightCssClass", this.NoHighlightCssClass);

            return new ScriptDescriptor[] { descriptor };
        }

        IEnumerable<ScriptReference> IScriptControl.GetScriptReferences()
        {
            return GetScriptReferences();
        }

        IEnumerable<ScriptDescriptor> IScriptControl.GetScriptDescriptors()
        {
            return GetScriptDescriptors();
        }
    }
}

         七、創建客戶端控件。為客戶端控件注冊一個命名空間,并實現各個屬性和事件:
// 為控件注冊命名控件
Type.registerNamespace('Samples');

//
// 定義控件的屬性
//
Samples.SampleTextBox = function(element) {
    Samples.SampleTextBox.initializeBase(this, [element]);

    this._highlightCssClass = null;
    this._nohighlightCssClass = null;
}

//
// 為控件創建屬性
//

Samples.SampleTextBox.prototype = {


    initialize : function() {
        Samples.SampleTextBox.callBaseMethod(this, 'initialize');
       
        this._onfocusHandler = Function.createDelegate(this, this._onFocus);
        this._onblurHandler = Function.createDelegate(this, this._onBlur);

        $addHandlers(this.get_element(),
                     { 'focus' : this._onFocus,
                       'blur' : this._onBlur },
                     this);
       
        this.get_element().className = this._nohighlightCssClass;
    },
   
    dispose : function() {
        $clearHandlers(this.get_element());
       
        Samples.SampleTextBox.callBaseMethod(this, 'dispose');
    },

    //
    // 事件委托
    //
   
    _onFocus : function(e) {
        if (this.get_element() && !this.get_element().disabled) {
            this.get_element().className = this._highlightCssClass;         
        }
    },
   
    _onBlur : function(e) {
        if (this.get_element() && !this.get_element().disabled) {
            this.get_element().className = this._nohighlightCssClass;         
        }
    },


    //
    // 控件屬性
    //
   
    get_highlightCssClass : function() {
        return this._highlightCssClass;
    },

    set_highlightCssClass : function(value) {
        if (this._highlightCssClass !== value) {
            this._highlightCssClass = value;
            this.raisePropertyChanged('highlightCssClass');
        }
    },
   
    get_nohighlightCssClass : function() {
        return this._nohighlightCssClass;
    },

    set_nohighlightCssClass : function(value) {
        if (this._nohighlightCssClass !== value) {
            this._nohighlightCssClass = value;
            this.raisePropertyChanged('nohighlightCssClass');
        }
    }
}

// Optional descriptor for JSON serialization.
Samples.SampleTextBox.descriptor = {
    properties: [   {name: 'highlightCssClass', type: String},
                    {name: 'nohighlightCssClass', type: String} ]
}

// Register the class as a type that inherits from Sys.UI.Control.
Samples.SampleTextBox.registerClass('Samples.SampleTextBox', Sys.UI.Control);

if (typeof(Sys) !== 'undefined') Sys.application.notifyScriptLoaded();

 

最后將如下代碼復制到Default.aspx頁面,用以測試空間:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Namespace="TextBoxExtender" TagPrefix="sample" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "

<html xmlns="<head id="Head1" runat="server">
    <title>ASP.NET AJAX Control Sample</title>
    <style type="text/css">
    .LowLight
    {
        background-color:#EEEEEE;
    }
   
    .HighLight
    {
        background-color:Ivory;
    }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" >
            <Scripts>
                <asp:ScriptReference Path="JScript.js" />
            </Scripts>
        </asp:ScriptManager>
        <div>
            <table border="0" cellpadding="2">
              <tr>
                <td><asp:Label runat="server" ID="Label1" AssociatedControlID="TextBox1">Name</asp:Label></td>
                <td><sample:SampleTextBox ID="TextBox1" runat="server" NoHighlightCssClass="LowLight" HighlightCssClass="HighLight" /></td>
              </tr>
              <tr>
                <td><asp:Label runat="server" ID="Label2" AssociatedControlID="TextBox2">Phone</asp:Label></td>
                <td><sample:SampleTextBox ID="TextBox2" runat="server" NoHighlightCssClass="LowLight" HighlightCssClass="HighLight" /></td>
              </tr>
              <tr>
                <td><asp:Label runat="server" ID="Label3" AssociatedControlID="TextBox3">E-mail</asp:Label></td>
                <td><sample:SampleTextBox ID="TextBox3" runat="server" NoHighlightCssClass="LowLight" HighlightCssClass="HighLight" /></td>
              </tr>
            </table>
           
            <asp:Button runat="server" ID="Button1" Text="Submit Form" />
        </div>
    </form>
</body>
</html>
http://www.49028c.com/hblynn/archive/2007/01/29/633619.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模精品系列视频| 亚洲有声小说3d| 亚洲精品国产电影| 97色在线观看| 欧美国产视频一区二区| 亚洲国产精品网站| 91免费视频国产| 亚洲精品www久久久久久广东| 国产日韩视频在线观看| 国产亚洲日本欧美韩国| 日韩av三级在线观看| 日日狠狠久久偷偷四色综合免费| 91在线观看免费高清| 国产精品欧美日韩久久| 成人xxxxx| 69国产精品成人在线播放| 国产欧美精品久久久| 亚洲一区二区三区四区在线播放| 亚洲色图综合久久| 亚洲福利视频网站| 成人免费xxxxx在线观看| 日韩一级裸体免费视频| 国产精品久久久久久影视| 亚洲国产精品中文| 国产美女直播视频一区| 亚洲精品黄网在线观看| 欧美黄色片在线观看| 日韩av在线免费| 亚洲在线视频福利| 亚洲91精品在线观看| 成人网在线视频| 亚洲第一综合天堂另类专| 国产精品草莓在线免费观看| 久久视频精品在线| 亚洲福利视频免费观看| 国产精品久久91| 日本欧美一级片| 日韩中文字幕亚洲| 欧美日韩高清在线观看| 欧美激情在线播放| 国产在线98福利播放视频| 欧美国产日韩xxxxx| 亚洲国产精品久久精品怡红院| 日韩av在线一区| 91豆花精品一区| www.久久撸.com| 色噜噜亚洲精品中文字幕| 91国产美女在线观看| 亚洲色图13p| 日韩高清电影免费观看完整| 成人欧美在线观看| 国产一区二区日韩精品欧美精品| 亚洲成年人在线播放| 国产a级全部精品| 亚洲免费中文字幕| 欧美专区在线观看| 久久精品国产成人| 这里只有视频精品| 91久久久精品| 亚洲精品aⅴ中文字幕乱码| 国产国产精品人在线视| 欧美大片在线免费观看| 久久高清视频免费| 精品中文字幕视频| 成人国产精品免费视频| 一个色综合导航| 国产精品久久久久久久久久| 久久久久久久91| 亚洲激情视频网站| 精品日本高清在线播放| 久久天天躁日日躁| 一区二区在线视频| 亚洲欧美精品中文字幕在线| 亚洲男子天堂网| 97视频在线免费观看| 91丨九色丨国产在线| 久久夜色精品国产欧美乱| 日韩精品在线视频观看| 亚洲香蕉在线观看| 亚洲欧美中文日韩在线| 色中色综合影院手机版在线观看| 91色视频在线导航| 亚洲国产精品网站| 日韩美女在线观看一区| 超碰日本道色综合久久综合| 日韩在线免费观看视频| 亚洲а∨天堂久久精品9966| 亚洲r级在线观看| 久久男人av资源网站| 中文字幕久久久av一区| 亚洲欧美中文日韩v在线观看| 日韩av在线网址| 精品一区二区三区四区| 色综合伊人色综合网| 国产成人免费91av在线| 精品国产福利在线| 日韩av在线免费观看| 国产精品高潮呻吟久久av黑人| 97香蕉久久夜色精品国产| 国产在线观看精品一区二区三区| 97免费中文视频在线观看| 亚洲精品成人久久电影| 最近2019年手机中文字幕| 亚洲欧美综合另类中字| 久久中国妇女中文字幕| 亚洲人成啪啪网站| 91久久久久久| 亚洲激情视频网| 欧美国产高跟鞋裸体秀xxxhd| 国产成人涩涩涩视频在线观看| 91久久精品视频| 成人黄色免费片| 色综合影院在线| 97久久精品人搡人人玩| 国产精品久久久久av| 精品香蕉一区二区三区| 欧美裸体xxxx极品少妇软件| 91在线免费观看网站| 亚洲国产日韩欧美在线99| 久久久精品视频成人| 91亚洲精品久久久| 国产精品亚洲网站| 国产成人综合精品| 午夜精品久久久久久久99黑人| 久久激情视频免费观看| 欧美一级视频一区二区| 欧美精品在线免费观看| 欧美成人午夜激情| 国产精品高清网站| 精品视频在线导航| 欧美日韩国产一中文字不卡| www日韩欧美| 日本亚洲欧美三级| 日韩中文字幕在线精品| 亚洲精品国产拍免费91在线| 国产精品视频网址| 欧美一区二区影院| 日韩av手机在线| 国产精品扒开腿做爽爽爽视频| 91国产中文字幕| 国产视频久久久久久久| 中文字幕亚洲二区| 日韩中文字幕视频| 久久69精品久久久久久国产越南| 日韩黄色高清视频| 国产精品久久久久77777| 亚洲美女精品成人在线视频| 久久影视电视剧凤归四时歌| 国产精品久久久久久久久男| 不卡毛片在线看| 亚洲第一精品福利| 欧美激情综合亚洲一二区| 精品亚洲一区二区三区| 亚洲精品网站在线播放gif| 色综合色综合网色综合| 久久久久久久久亚洲| 久久精品视频99| 久久精品视频中文字幕| 亚洲一区二区久久久| 亚洲精品中文字| 国产精品久久久久久久久| 九九热这里只有精品6| 国产综合香蕉五月婷在线| 97香蕉久久超级碰碰高清版|