创建自定义网页控件

分享于 

4分钟阅读

Web开发

  繁體

Sample screenshot

介绍

为了满足个人或者企业的需求,本文解释并说明了如何扩展Web控件提供的标准功能。

背景

我处理一个项目,该项目处理现有的Power Builder应用程序到. NET的迁移。 新平台的自然选择是. NET,原因是开发者和整个企业向通用微软商店的发展。 我在现有应用程序( 客户端/服务器) 中遇到了一个功能,用户双击一个文本框( 日期字段),当前日期被插入。 为了复制这段功能,我们在每个页面中编写了一些 JavaScript Fragment。 然后我们认为这是一个痛苦的过程,因此我们决定提出一个扩展了文本框现有功能的控件。 它也可以用用户控件来完成,但是我们认为可以用Web控件来代替它。

使用代码

下载源代码。下载zip文件包含控件源代码和包含控件的示例aspx页的解决方案。 下面给出了代码:

VenusDateTextBox.vb


Option Strict On



Imports System.ComponentModel


Imports System.Web.UI



<DEFAULTPROPERTY("Text"), VALIDATIONPROPERTY("Text"), 


 TOOLBOXDATA("<{0}:VenusDateTextBox runat="server">")> 


 Public Class VenusDateTextBox _


 Inherits System.Web.UI.WebControls.TextBox _


 Implements INamingContainer



#Region" Member Variables"


 


 Private Const DateIncludeScriptKey As String = "DateCurrentDateInsertScript"



 ' The script block that is rendered to insert the Private I Date.


 Private Const DateCurrentDateInsertScript As String = ControlChars.CrLf & _


 "<SCRIPT LANGUAGE=""JAVASCRIPT"">" & ControlChars.CrLf & _


 "<!--" & ControlChars.CrLf & _


 "function InsertCurrentDate(VenusDateControl)" & ControlChars.CrLf & _


 " {" & ControlChars.CrLf & _


 " var curDate = new Date();" & ControlChars.CrLf & _


 " var formattedDate = curDate.getMonth() + '/'" & _


 " + curDate.getDate() + '/' + curDate.getFullYear();" _


 & ControlChars.CrLf & _


 " document.all.item(VenusDateControl).value = formattedDate;" _


 & ControlChars.CrLf & _


 " }" & ControlChars.CrLf & _


 "//-->" & ControlChars.CrLf & _


 "</SCRIPT>"



#End Region





#Region" Overrides"


 


 Protected Overrides Sub AddAttributesToRender(ByVal_


 writer As System.Web.UI.HtmlTextWriter)


 MyBase.AddAttributesToRender(writer)


 writer.AddAttribute("ondblclick", _


 "InsertCurrentDate('" & ClientID & "');")


 End Sub



 Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)


 MyBase.OnPreRender(e)


 RegisterVenusDateIncludeScript()


 End Sub



#End Region





#Region" Private Methods"


 


 Private Sub RegisterVenusDateIncludeScript()


 Dim location As String = Nothing


 If Not Page.IsClientScriptBlockRegistered(DateIncludeScriptKey) Then


 ' Create the client script block.


 Page.RegisterClientScriptBlock(DateIncludeScriptKey,_


 DateCurrentDateInsertScript)


 End If


 End Sub



#End Region





End Class




相关文章