亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET源碼之自定義控件DateTimePicker怎么用

發布時間:2021-12-01 16:19:48 來源:億速云 閱讀:345 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關ASP.NET源碼之自定義控件DateTimePicker怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

ASP.NET源碼之自定義控件DateTimePicker的介紹:寫在前面:要實現DateTimePicker功能,最簡單的就是一個input,旁邊有一個日歷的小圖標,加入大量的javascript代碼,然后,點擊日歷后,就出現一個div用來選擇日期,選定之后,input就會出現剛才選定的日期。而input應該是只讀的。

ASP.NET源碼之自定義控件DateTimePicker效果圖

ASP.NET源碼之自定義控件DateTimePicker怎么用

標記

Register Assembly="DateTimePickerControls" Namespace="DateTimePickerControls" TagPrefix="DTP"
這是寫在aspx頁上面的,用于引用dll的資源。

對應于源代碼中的命名空間的屬性定義

[assembly: TagPrefix("DateTimePickerControls", "DTP")]

加入工具箱

可以使用下面的方法將自定義的ASP.NET控件加入到工具箱中,如果引入DLL之后,工具箱還不出現控件,可以在工具箱右擊,選擇項,然后選擇DLL就一定可以。下面的ToolboxData表現控件的名稱,而Designer表示控件在設計界面(DesignMode)中的樣子,注意,必須存在DateTimePickerControls.DateTimePickerDesigner這個類才出現這句話。而DescriptionAttribute則是描述控件的作用。

[    ToolboxData("<{0}:DateTimePicker runat=server></{0}:DateTimePicker>"),    ValidationPropertyAttribute("Text"),    Designer(typeof(DateTimePickerControls.DateTimePickerDesigner)),    DescriptionAttribute("一個基于 MSHTML 的 ASP.NET 時間選擇器。")    ]

ASP.NET源碼之自定義控件DateTimePicker怎么用

繼承

public class DateTimePicker: Control, IPostBackDataHandler, INamingContainer, IPostBackEventHandler

Control 是System.Web.UI空間下面的Control,表現Web控件的類,而IPostBackDataHandler是定義 ASP.NET 服務器控件為自動加載回發數據而必須實現的方法。也就是,使用_Control.Tex而不是Request.QueryString[“…”]. ToString()或Request.Form[“…”].ToString(),來獲取Html中的數據,主要的方法是LoadPostData, RaisePostDataChangedEvent,而INamingContainer和IPostBackEventHandler則暫時沒怎么使用。筆者只是參考其它Web控件而把這兩個接口加上去。

注冊腳本

注意到每一個Web自定義控件,都有其對應的Javascript或Vbscript腳本,而且,當頁面上有多個這樣的控件。不應用出現多個相同腳本。

所以,要使用Page.ClientScript.IsClientScriptBlockRegistered方法來注冊腳本。這樣的注冊腳本,相當于有一個Hashtable來保存腳本,而每一個注入的腳本都有一個Key來關聯。這樣的好處是,在使用多個腳本時,不會重復地寫在頁面上。

下面的代碼,使用到資源文件中寫好的腳本文件,換句話說,可以將腳本文件,如Javascript或Vbscript腳本先寫好,然后,直接復制到

if (!Page.ClientScript.IsClientScriptBlockRegistered("DateTimePickerBaseScript"))  {      ResourceManager manager = new ResourceManager(this.GetType());      string script = manager.GetResourceSet(          System.Globalization.CultureInfo.CurrentCulture, true, true).GetString("DateTimePickerBaseScript");      Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DateTimePickerBaseScript", script);  }

而.resx文件的源代碼,可以是這樣的:

<root>  <!--其它的資源-->  <data name="DateTimePickerBaseScript">  <![CDATA[  Javascript或VbScript  ]]>  </data>  </root>

在資源文件中寫腳本的優點是十分的明顯的,也就是.js的內容可以直接復制并粘貼到這里,而不用再經過處理。

ASP.NET源碼之自定義控件DateTimePicker重寫Control繼承而來的方法

protected override void OnPreRender(EventArgs e)

protected override void CreateChildControls()

可以將OnPreRender方法當成普通Page的OnLoad方法使用,而CreateChildControls方法用于新建子控件,也就是構造自定義控件的主要代碼。

獲取Text屬性

   public bool LoadPostData(String postDataKey, NameValueCollection values)     {  string PresentValue = this.ViewStateText;  string PostedValue = values[base.ID];  if (!PresentValue.Equals(PostedValue))  {      this.Text = PostedValue;      return true;  }  else {      return false;  }     }

上面是使用LoadPostData方法來獲取Text屬性的值。注意,這個方法有時候是不運行的,這是因為你的ChildControls中沒有一個ID =base.ID的控件,則,必須有一個子控件的ID為本控件的ID,這里講的子控件,不是指System.Web.UI空間下面的控件,而是指代那些可以在客戶端的瀏覽器中顯示的<input id=””>形式的控件,也就是使用string來表達的。正如

WriteTimePicker方法中寫到的"<input type=\"text\" id=\"" + DateTimePickerID。

獲取FormID

可以使用一個遍歷的過程,獲取項層控件的ClientID,因為在Js腳本中,服務器端的ID是用不了的。

設置DesignMode屬性類

也就是前面所提及的Designer(typeof (DateTimePickerControls.DateTimePickerDesigner)),相對來說,是比較簡單的,可以說,你可以參照一個正確的例子,然后隨便修改一下就可以。需要繼承System.Web.UI.Design.ControlDesigner類,重寫方法 Initialize,GetDesignTimeHtml。而GetDesignTimeHtml就是***顯示在設計界面上面的樣子。

ASP.NET源碼之自定義控件DateTimePicker怎么用

設計代碼如下:

StringWriter sw = new StringWriter();   HtmlTextWriter htw = new HtmlTextWriter(sw);  HtmlInputText inputText = new HtmlInputText();  inputText.Value = dtp.ID;  inputText.Style.Value = "Width:100px;border-style: none;background-color: #9EBEF5";             inputText.RenderControl(htw);  return sw.ToString();

綜上述得,要定義一個比較好的自定義控件,首先要有一個非控件形式的“功能點”使用方法,即上述的時間選擇功能,要JSP,ASP,ASP.NET中都可以使用的。然后,根據ASP.NET自定義控件的語法,一步步翻譯就沒什么問題了。

感謝各位的閱讀!關于“ASP.NET源碼之自定義控件DateTimePicker怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商城县| 白水县| 抚宁县| 黎川县| 南投县| 奉节县| 如皋市| 色达县| 商丘市| 凤庆县| 乐亭县| 望城县| 开远市| 嫩江县| 肥城市| 林芝县| 达尔| 平阴县| 台山市| 马龙县| 奇台县| 泊头市| 星子县| 安远县| 阿拉善盟| 孟州市| 大余县| 鄂州市| 襄城县| 黄石市| 金乡县| 阿鲁科尔沁旗| 叙永县| 西平县| 沿河| 离岛区| 广昌县| 鄂伦春自治旗| 江都市| 安塞县| 馆陶县|