Ecco il codice. E' un controllo utente (un esercizio di controllo utente
) che non fa altro che scrivere l'ora e la data client.
NOTA: ti copio il codice funzionante tale e quale in Basic
orologio.ascx
codice:
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="orologio.ascx.vb" Inherits="sitae.orologio" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:Label id="lblOrario" runat="server" Font-Size="XX-Small" Font-Names="Tahoma" ></asp:Label>
Codebehind
codice:
Public Class orologio
Inherits System.Web.UI.UserControl
#Region " Codice generato da Progettazione Web Form "
'Chiamata richiesta da Progettazione Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Protected WithEvents lblOrario As System.Web.UI.WebControls.Label
'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
'Non spostarla o rimuoverla.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
'Non modificarla nell'editor del codice.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina
'If Me.lblOrario.Visible Then CreaScript() messo in prerender
End Sub
Private Sub CreaScript()
Dim ClientID$ = Me.lblOrario.ClientID
Dim CrLf$ = ""
If Me.StessaRiga Then CrLf = "," Else CrLf = "
"
Dim BoldData1$ = "", BoldData2$ = ""
If Me.BoldData Then
BoldData1 = ""
BoldData2 = ""
End If
Dim BoldOra1$ = "", BoldOra2$ = ""
If Me.BoldOra Then
BoldOra1 = ""
BoldOra2 = ""
End If
Dim script$ = ""
script &= "<script>"
script &= String.Format("function {0}_showclock()", ClientID)
script &= "{"
script &= " var tempo = document.getElementById(""" & ClientID & """);"
script &= " var mesi = [""Gennaio"",""Febbraio"",""Marzo"",""Aprile"",""Maggio"",""Giugno"",""Luglio"",""Agosto"",""Settembre"",""Ottobre"",""Novembre"",""Dicembre""];"
script &= " var oggi = new Date();"
script &= " var anno = oggi.getFullYear();"
script &= " var mese = oggi.getMonth();"
script &= " var giorno = oggi.getDate();"
script &= " var ora = oggi.getHours() + """"; if(ora.length < 2) ora = ""0"" + ora;"
script &= " var minuto = oggi.getMinutes() + """"; if(minuto.length < 2) minuto = ""0"" + minuto;"
script &= " var secondo = oggi.getSeconds() + """"; if(secondo.length < 2) secondo = ""0"" + secondo;"
'script &= " var orologio = """ & BoldData1 & """ + giorno + "" "" + mesi[mese] + "" "" + anno + """ & CrLf & """ + """ & BoldData2 & """ + """ & BoldOra1 & """ + ora + "":"" + minuto + "":"" + secondo + """ & BoldOra2 & """ ;"
script &= " var orologio = """
If Me.DataVisibile Then
script &= BoldData1 & """ + giorno + "" "" + mesi[mese] + "" "" + anno + """
End If
If Me.OraVisibile Then
If Me.DataVisibile = False Then CrLf = ""
script &= CrLf & """ + """ & BoldData2 & """ + """ & BoldOra1 & """ + ora + "":"" + minuto + "":"" + secondo + """ & BoldOra2
End If
script &= """ ;"
script &= " tempo.innerHTML = orologio;"
script &= "}" & vbCrLf
script &= String.Format(";{0}_showclock();window.setInterval(""{0}_showclock()"", 1000);", ClientID)
script &= "</script>"
Me.Page.RegisterStartupScript(ClientID & "_showclock", script)
End Sub
Public Property label() As label
Get
Return Me.lblOrario
End Get
Set(ByVal Value As label)
Me.lblOrario = Value
End Set
End Property
Private _StessaRiga As Boolean = True 'default
Public Property StessaRiga() As Boolean
Get
If Me.IsPostBack Then
Dim j As Object = Me.ViewState("StessaRiga")
If Not (j Is Nothing) Then
Me._StessaRiga = CBool(j)
End If
End If
Return Me._StessaRiga
End Get
Set(ByVal Value As Boolean)
Me._StessaRiga = Value
'salvo il valore nel viewstate
Me.ViewState("StessaRiga") = Value
End Set
End Property
Private _BoldData As Boolean = False 'default
Public Property BoldData() As Boolean
Get
If Me.IsPostBack Then
Dim j As Object = Me.ViewState("BoldData")
If Not (j Is Nothing) Then
Me._BoldData = CBool(j)
End If
End If
Return Me._BoldData
End Get
Set(ByVal Value As Boolean)
Me._BoldData = Value
'salvo il valore nel viewstate
Me.ViewState("BoldData") = Value
End Set
End Property
Private _BoldOra As Boolean = False 'default
Public Property BoldOra() As Boolean
Get
If Me.IsPostBack Then
Dim j As Object = Me.ViewState("BoldOra")
If Not (j Is Nothing) Then
Me._BoldOra = CBool(j)
End If
End If
Return Me._BoldOra
End Get
Set(ByVal Value As Boolean)
Me._BoldOra = Value
'salvo il valore nel viewstate
Me.ViewState("BoldOra") = Value
End Set
End Property
Private _OraVisibile As Boolean = True 'default
Public Property OraVisibile() As Boolean
Get
If Me.IsPostBack Then
Dim j As Object = Me.ViewState("OraVisibile")
If Not (j Is Nothing) Then
Me._OraVisibile = CBool(j)
End If
End If
Return Me._OraVisibile
End Get
Set(ByVal Value As Boolean)
Me._OraVisibile = Value
'salvo il valore nel viewstate
Me.ViewState("OraVisibile") = Value
End Set
End Property
Private _DataVisibile As Boolean = True 'default
Public Property DataVisibile() As Boolean
Get
If Me.IsPostBack Then
Dim j As Object = Me.ViewState("DataVisibile")
If Not (j Is Nothing) Then
Me._DataVisibile = CBool(j)
End If
End If
Return Me._DataVisibile
End Get
Set(ByVal Value As Boolean)
Me._DataVisibile = Value
'salvo il valore nel viewstate
Me.ViewState("DataVisibile") = Value
End Set
End Property
Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
If Me.lblOrario.Visible Then CreaScript()
End Sub
End Class
test_orologio.aspx
codice:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="test_orologio.aspx.vb" Inherits="sitae.test_orologio" %>
<%@ Register TagPrefix="uc1" TagName="orologio" Src="orologio.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>test_orologio</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="JavaScript1.2">
var n = (document.layers) ? 1:0;
var ie = (document.all) ? 1:0;
var layer=(n)?'layer':'div'
function dragObj(obj,nest){
nest=(!nest) ? '':'document.'+nest+'.'
this.css=(n) ? eval(nest+'document.'+obj):eval('document.all.'+obj+'.style')
this.evnt=(n)? eval(nest+'document.'+obj):eval(obj);
this.getLeft=b_getLeft;
this.getTop=b_getTop;
this.moveIt=b_moveIt;
this.name=obj
return this
}
function b_moveIt(x,y){
this.css.left=x
this.css.top=y
}
function b_getLeft(){
x=(n)? this.css.left:this.css.pixelLeft
return x
}
function b_getTop(){
y=(n)? this.css.top:this.css.pixelTop
return y
}
function dragInit(){
if(n) document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP)
document.onmousedown=mdown
document.onmouseup=mup
document.onmousemove=mmove;
}
function mmover(num){
oDrag[num].isOver=true
}
function mmout(num){
oDrag[num].isOver=false
}
function mup(){
for(var i=0; i<oDrag.length;i++){
if(oDrag[i].isOver) {
oDrag[i].drag=false
}
}
}
function mdown(num){
x=(n)?num.pageX:event.x
y=(n)?num.pageY:event.y
for(var i=0; i<oDrag.length;i++){
if(oDrag[i].isOver) {
oDrag[i].drag=true
oDrag[i].clickedX=x-oDrag[i].getLeft()
oDrag[i].clickedY=y-oDrag[i].getTop()
cZIndex++
oDrag[i].css.zIndex=cZIndex
}
}
}
function mmove(e){
x=(n)?e.pageX:event.x
y=(n)?e.pageY:event.y
for(var i=0; i<oDrag.length;i++){
if(oDrag[i].drag)
oDrag[i].moveIt(x-oDrag[i].clickedX,y-oDrag[i].clickedY)
}
}
function init(){
dragInit()
oDrag=new Array()
oDrag[0]=new dragObj('divDrag0')
//oDrag[1]=new dragObj('divDrag1')
//oDrag[2]=new dragObj('divDrag2')
}
cZIndex=10
if(n || ie) onload=init;
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" style="BACKGROUND-COLOR: #ffffcc">
<form id="Form1" method="post" runat="server">
<uc1:orologio id="Orologio1" runat="server"></uc1:orologio>
<div id="divDrag0" style="BACKGROUND-POSITION: 0% 0%; BACKGROUND-ATTACHMENT: scroll; LEFT: 100px; BACKGROUND-IMAGE: none; BACKGROUND-REPEAT: repeat; POSITION: absolute; TOP: 100px"
language="JavaScript1.2" onmouseover="mmover(0)" onmouseout="mmout(0)">
<uc1:orologio id="Orologio2" runat="server"></uc1:orologio>
</div>
</form>
</body>
</HTML>
Codebehind
codice:
Public Class test_orologio
Inherits System.Web.UI.Page
Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
Protected WithEvents Orologio1 As orologio
Protected WithEvents Orologio2 As orologio
#Region " Codice generato da Progettazione Web Form "
'Chiamata richiesta da Progettazione Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
'Non modificarla nell'editor del codice.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina
Me.Orologio2.StessaRiga = False
Me.Orologio2.BoldData = True
Me.Orologio2.BoldOra = True
'Me.Orologio2.OraVisibile = False
'Me.Orologio2.DataVisibile = False
Me.Orologio2.label.ForeColor = Color.Yellow
Me.Orologio2.label.Font.Size = FontUnit.XXLarge
Me.Orologio2.label.BackColor = Color.Red
Me.Orologio2.label.BorderColor = Color.Black
Me.Orologio2.label.BorderStyle = BorderStyle.Double
Me.Orologio2.label.Style.Add("TEXT-ALIGN", "center")
Me.Orologio2.label.Style.Add("width", "500px")
'Me.Orologio1.Visible = False
'Me.Orologio2.Visible = False
End Sub
End Class