VRFan_5d
职务:普通成员
等级:1
金币:0.0
发贴:7
|
#12003/5/18 0:01:23
ASP.NET 随附了 45 个可以在框外使用的内置服务器控件(有关详细信息,请参阅 Web 窗体控件引用)。除了使用内置 ASP.NET 控件外,开发人员还可使用由第三方供应商开发的控件。 下面的示例显示一个简单的日历控件。Calendar 控件在页内由 标记声明。注意,页顶部的 <% Register %> 指令负责向控件实现的“Acme”代码命名空间注册“Acme”XML 标记前缀。ASP.NET 页分析器然后将在运行时利用该命名空间加载 Calendar 控件类实例。 C#:Intro7.aspx -------------------------------------------------------------------------------------------------- <%@ Register TagPrefix="Acme" Namespace="Acme" Assembly="Acme" %>
-------------------------------------------------------------------------------------------------- Acme.cs -------------------------------------------------------------------------------------------------- using System; using System.Web; using System.Web.UI; using System.Collections; using System.Collections.Specialized; using System.Reflection;
[assembly: AssemblyTitle("")] [assembly: AssemblyDescription("快速入门教程汇编")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Microsoft Corporation")] [assembly: AssemblyProduct("Microsoft QuickStart Tutorials")] [assembly: AssemblyCopyright("Microsoft Corporation. All rights reserved.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: AssemblyVersion("1.0.*")]
namespace Acme { public class Calendar : Control, IPostBackEventHandler, IPostBackDataHandler { private String[] monthNames = new String[12]; private DateTime currentDate = DateTime.Now; private String backColor = "#dcdcdc"; private String foreColor = "#eeeeee";
protected override void OnInit(EventArgs E) { Page.RegisterRequiresPostBack(this);
currentDate = DateTime.Now;
monthNames[0] = "一月"; monthNames[1] = "二月"; monthNames[2] = "三月"; monthNames[3] = "四月"; monthNames[4] = "五月"; monthNames[5] = "六月"; monthNames[6] = "七月"; monthNames[7] = "八月"; monthNames[8] = "九月"; monthNames[9] = "十月"; monthNames[10] = "十一月"; monthNames[11] = "十二月"; }
protected override void LoadViewState(Object viewState) { // 如果我们执行了回发,则可以使用以前的日期
if (null != viewState) { currentDate = DateTime.Parse((String) viewState); } }
public void RaisePostBackEvent(String eventArgument) { //Page.Response.Write("调用了 RaisePostBackEvent!!!");
if (eventArgument == null) { return; }
// 跟踪以前的日期(用于引发事件)
DateTime oldDate = currentDate;
if (String.Compare("NavNextMonth", eventArgument, true) == 0) { currentDate = currentDate.AddMonths(1); } else if (String.Compare("NavPrevMonth", eventArgument, true) == 0) { currentDate = currentDate.AddMonths(-1); } else { int daySelected = Int32.Parse(eventArgument); currentDate = new DateTime(currentDate.Year, currentDate.Month, daySelected); } }
protected override Object SaveViewState() { // 将 CurrentDate 作为回发方案的视图状态保存出来
return currentDate.ToString(); }
protected override void Render(HtmlTextWriter output) { if ((Page.Request.UserAgent != null)&&(Page.Request.UserAgent.IndexOf("MSIE 5.5") != -1)) RenderUpLevel(output); else RenderDownLevel(output); }
protected void RenderUpLevel(HtmlTextWriter output) { output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); }
protected override void OnPreRender(EventArgs E) { String DHTMLFunction = "";
DHTMLFunction += "\n";
if ((Page.Request.UserAgent != null)&&(Page.Request.UserAgent.IndexOf("MSIE 5.5") != -1)) Page.RegisterClientScriptBlock("ACME_CALENDAR_DHTML", DHTMLFunction); }
protected void RenderDownLevel(HtmlTextWriter output) { // 输出日历标题
output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); output.WriteLine(" "); output.WriteLine(""); output.WriteLine(" " + monthNames[currentDate.Month-1] + " " + currentDate.Year.ToString() + ""); output.WriteLine(" "); output.WriteLine(""); output.WriteLine(""); output.WriteLine(" | "); output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); output.WriteLine(" Sun | "); output.WriteLine(" Mon | "); output.WriteLine(" Tue | "); output.WriteLine(" Wed | "); output.WriteLine(" Thu | "); output.WriteLine(" Fri | "); output.WriteLine(" Sat | "); output.WriteLine(" "); output.WriteLine("");
// 计算该月中有多少天
int numDays = DateTime.DaysInMonth(currentDate.Year, currentDate.Month);
// 计算该月的第一天是周几
int firstDay = Convert.ToInt32(new DateTime(currentDate.Year, currentDate.Month, 1).DayOfWeek);
// 准备填充日期
for (int x=0; x { output.WriteLine(" | "); }
// 输出每一天
for (int x=1; x<=numDays; x++) { if (currentDate.Day == x) { output.Write(""); output.Write("" + x.ToString() + ""); output.WriteLine(" | "); } else { output.Write(""); output.Write(""); output.Write(x.ToString() + ""); output.WriteLine(" | "); }
// 在每页中进行适当地分行 if (((firstDay+x) % 7) == 0) { output.WriteLine(" "); } }
output.WriteLine(" "); output.WriteLine(" | | "); }
public DateTime Date { get { return currentDate; } set { currentDate = value; } }
public String BackColor { get { return backColor; } set { backColor = value; } }
public String ForeColor { get { return foreColor; } set { foreColor = value; } }
public bool LoadPostData(String postDataKey, NamevalueCollection values) { String clientDate = values[UniqueID + "_CurrentDate"];
if (clientDate != null) { try { currentDate = DateTime.Parse(clientDate); } catch(Exception) { currentDate = DateTime.Now; } }
return false; }
public void RaisePostDataChangedEvent() {
} } }
-------------------------------------------------------------------------------------------------- ads.xml --------------------------------------------------------------------------------------------------
/quickstart/aspplus/images/banner1.gif http://www.microsoft.com Alt Text Computers 80
/quickstart/aspplus/images/banner2.gif http://www.microsoft.com Alt Text Computers 80
/quickstart/aspplus/images/banner3.gif http://www.microsoft.com Alt Text Computers 80
VB:Intro7.aspx -------------------------------------------------------------------------------------------------- <%@ Register TagPrefix="Acme" Namespace="AcmeVB" Assembly="AcmeVB" %>
-------------------------------------------------------------------------------------------------- Acme.vb -------------------------------------------------------------------------------------------------- Imports System Imports System.Web Imports System.Web.UI Imports System.Collections Imports System.Collections.Specialized Imports Microsoft.VisualBasic Imports System.Reflection
< _ Assembly : AssemblyTitle(""), _ Assembly : AssemblyDescription("快速入门教程汇编"), _ Assembly : AssemblyConfiguration(""), _ Assembly : AssemblyCompany("Microsoft Corporation"), _ Assembly : AssemblyProduct("Microsoft QuickStart Tutorials"), _ Assembly : AssemblyCopyright("Microsoft Corporation. All rights reserved."), _ Assembly : AssemblyTrademark(""), _ Assembly : AssemblyCulture(""), _ Assembly : AssemblyVersion("1.0.*"), _ Assembly : AssemblyDelaySign(false), _ Assembly : AssemblyKeyFile(""), _ Assembly : AssemblyKeyName("") _ > Namespace AcmeVB Public Class Calendar : Inherits Control : Implements IPostBackEventHandler, IPostBackDataHandler Dim Private monthNames(11) As String Dim Private currentDate As DateTime = DateTime.Now Dim private pBackColor As String = "#dcdcdc" Dim private pForeColor As String = "#eeeeee"
Protected Overrides Sub OnInit(E As EventArgs) Page.RegisterRequiresPostBack(Me)
currentDate = DateTime.Now
monthNames(0) = "一月" monthNames(1) = "二月" monthNames(2) = "三月" monthNames(3) = "四月" monthNames(4) = "五月" monthNames(5) = "六月" monthNames(6) = "七月" monthNames(7) = "八月" monthNames(8) = "九月" monthNames(9) = "十月" monthNames(10) = "十一月" monthNames(11) = "十二月" End Sub
Protected Overrides Sub LoadViewState(viewState As Object) '如果我们执行了回发,则可以使用以前的日期
If Not viewState Is Nothing currentDate = DateTime.Parse(CStr(viewState)) End If End Sub
Public Sub RaisePostBackEvent(eventArgument As String) Implements IPostBackEventHandler.RaisePostBackEvent If eventArgument = Nothing Then Exit Sub
'跟踪以前的日期(用于引发事件)
Dim oldDate As DateTime = currentDate
If String.Compare("NavNextMonth", eventArgument, true) = 0 currentDate = currentDate.AddMonths(1) ElseIf String.Compare("NavPrevMonth", eventArgument, true) = 0 currentDate = currentDate.AddMonths(-1) Else Dim daySelected As Integer = Int32.Parse(eventArgument) currentDate = new DateTime(currentDate.Year, currentDate.Month, daySelected) End If End Sub
Protected Overrides Function SaveViewState() As Object '将 CurrentDate 作为回发方案的视图状态保存出来 SaveViewState = currentDate.ToString() End Function
Protected Overrides Sub Render(output As HtmlTextWriter) If ((Not Page.Request.UserAgent = Nothing) AndAlso (Page.Request.UserAgent.IndexOf("MSIE 5.5") <> -1)) RenderUpLevel(output) Else RenderDownLevel(output) End If End Sub
Protected Sub RenderUpLevel(output As HtmlTextWriter) output.WriteLine("") output.WriteLine("") output.WriteLine("") End Sub
Protected Overrides Sub OnPreRender(E As EventArgs) Dim DHTMLFunction As String = ""
DHTMLFunction = DHTMLFunction & "\n" DHTMLFunction = DHTMLFunction.Replace("\n", Chr(10))
If ((Not Page.Request.UserAgent = Nothing) AndAlso (Page.Request.UserAgent.IndexOf("MSIE 5.5") <> -1)) Page.RegisterClientScriptBlock("ACME_CALENDAR_DHTML", DHTMLFunction) End If End Sub
Protected Sub RenderDownLevel(output As HtmlTextWriter) '输出日历标题
output.WriteLine("") output.WriteLine("") output.WriteLine("") output.WriteLine("") output.WriteLine(" ") output.WriteLine("") output.WriteLine(" " & monthNames(currentDate.Month-1) & " " & currentDate.Year.ToString() & "") output.WriteLine(" ") output.WriteLine("") output.WriteLine("") output.WriteLine(" | ") output.WriteLine("") output.WriteLine("") output.WriteLine("") output.WriteLine(" Sun | ") output.WriteLine(" Mon | ") output.WriteLine(" Tue | ") output.WriteLine(" Wed | ") output.WriteLine(" Thu | ") output.WriteLine(" Fri | ") output.WriteLine(" Sat | ") output.WriteLine(" ") output.WriteLine("")
'计算该月中有多少天
Dim numDays As Integer = DateTime.DaysInMonth(currentDate.Year, currentDate.Month)
'计算该月的第一天是周几
Dim firstDay As Integer = New DateTime(currentDate.Year, currentDate.Month, 1).DayOfWeek
'准备填充日期 Dim x As Integer
For x = 0 To firstDay - 1 output.WriteLine(" | ") Next
'输出每一天
For x = 1 To numDays If currentDate.Day = x output.Write("") output.Write("" & x.ToString() & "") output.WriteLine(" | ") Else output.Write("") output.Write("") output.Write(x.ToString() & "") output.WriteLine(" | ") End If
'在每页中进行适当地分行 If ((firstDay+x) Mod 7) = 0 output.WriteLine(" ") End If Next
output.WriteLine(" ") output.WriteLine(" | | ") End Sub
Public Property [Date] As DateTime Get Return currentDate End Get Set currentDate = value End Set End Property
Public Property BackColor As String Get Return pBackColor End Get Set pBackColor = value End Set End Property
Public Property ForeColor As String Get Return pForeColor End Get Set pForeColor = value End Set End Property
Public Function LoadPostData(postDataKey As String, values As NamevalueCollection) As Boolean Implements IPostBackDataHandler.LoadPostData Dim clientDate As String = values(UniqueID & "_CurrentDate")
If Not clientDate = Nothing Try currentDate = DateTime.Parse(clientDate) Catch currentDate = DateTime.Now End Try End If
Return False End Function
Public Sub RaisePostDataChangedEvent() Implements IPostBackDataHandler.RaisePostDataChangedEvent End Sub End Class End Namespace
-------------------------------------------------------------------------------------------------- ads.xml --------------------------------------------------------------------------------------------------
/quickstart/aspplus/images/banner1.gif http://www.microsoft.com Alt Text Computers 80
/quickstart/aspplus/images/banner2.gif http://www.microsoft.com Alt Text Computers 80
/quickstart/aspplus/images/banner3.gif http://www.microsoft.com Alt Text Computers 80
-------------------------------------------------------------------------------------------------- js:Intro7.aspx -------------------------------------------------------------------------------------------------- <%@ Register TagPrefix="Acme" Namespace="AcmeJS" Assembly="AcmeJS" %>
-------------------------------------------------------------------------------------------------- Acme.js -------------------------------------------------------------------------------------------------- import System; import System.Collections; import System.Collections.Specialized; import System.Text; import System.Web; import System.Web.UI; import System.Reflection;
[assembly: AssemblyTitle("")] [assembly: AssemblyDescription("A QuickStart Tutorial Assembly")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Microsoft Corporation")] [assembly: AssemblyProduct("Microsoft QuickStart Tutorials")] [assembly: AssemblyCopyright("Microsoft Corporation. All rights reserved.")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: AssemblyVersion("1.0.*")]
package AcmeJS { public class Calendar extends Control implements IPostBackEventHandler, IPostBackDataHandler { private var monthNames:String[] = new String[12]; private var currentDate:DateTime = DateTime.Now; private var backColor:String = "#dcdcdc"; private var foreColor:String = "#eeeeee";
protected function OnInit(E:EventArgs) : void { Page.RegisterRequiresPostBack(this);
currentDate = DateTime.Now;
monthNames[0] = "January"; monthNames[1] = "February"; monthNames[2] = "March"; monthNames[3] = "April"; monthNames[4] = "May"; monthNames[5] = "June"; monthNames[6] = "July"; monthNames[7] = "August"; monthNames[8] = "September"; monthNames[9] = "October"; monthNames[10] = "November"; monthNames[11] = "December"; }
protected function LoadViewState(viewState:Object) : void { // 如果我们执行了回发,则可以使用以前日期
if (null != viewState) { currentDate = DateTime.Parse(String(viewState)); } }
public function RaisePostBackEvent(eventArgument:String) : void { if (eventArgument == null) { return; }
// 跟踪以前的日期(用于引发事件)
var oldDate:DateTime = currentDate;
if (String.Compare("NavNextMonth", eventArgument, true) == 0) { currentDate = currentDate.AddMonths(1); } else if (String.Compare("NavPrevMonth", eventArgument, true) == 0) { currentDate = currentDate.AddMonths(-1); } else { var daySelected:int = Int32.Parse(eventArgument); currentDate = new DateTime(currentDate.Year, currentDate.Month, daySelected); } }
protected function SaveViewState() : Object { // 将 CurrentDate 作为回发方案的视图状态保存出来
return currentDate.ToString(); }
protected function Render(output:HtmlTextWriter) : void { if ((Page.Request.UserAgent != null)&&(Page.Request.UserAgent.IndexOf("MSIE 5.5") != -1)) RenderUpLevel(output); else RenderDownLevel(output); }
protected function RenderUpLevel(output:HtmlTextWriter) : void { output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); }
protected function OnPreRender(E:EventArgs) : void { var DHTMLFunction:StringBuilder = new StringBuilder();
DHTMLFunction.Append("\n");
if ((Page.Request.UserAgent != null)&&(Page.Request.UserAgent.IndexOf("MSIE 5.5") != -1)) Page.RegisterClientScriptBlock("ACME_CALENDAR_DHTML", DHTMLFunction.ToString()); }
protected function RenderDownLevel(output:HtmlTextWriter) : void { // 输出日历标题
output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); output.WriteLine(" "); output.WriteLine(""); output.WriteLine(" " + monthNames[currentDate.Month-1] + " " + currentDate.Year.ToString() + ""); output.WriteLine(" "); output.WriteLine(""); output.WriteLine(""); output.WriteLine(" | "); output.WriteLine(""); output.WriteLine(""); output.WriteLine(""); output.WriteLine(" Sun | "); output.WriteLine(" Mon | "); output.WriteLine(" Tue | "); output.WriteLine(" Wed | "); output.WriteLine(" Thu | "); output.WriteLine(" Fri | "); output.WriteLine(" Sat | "); output.WriteLine(" "); output.WriteLine("");
// 计算该月中有多少天
var numDays:int = DateTime.DaysInMonth(currentDate.Year, currentDate.Month);
// 计算该月的第一天是周几
var firstDay:int = new DateTime(currentDate.Year, currentDate.Month, 1).DayOfWeek;
// 准备填充日期 var x:int; for ( x=0; x { output.WriteLine(" | "); }
// 输出每一天
for ( x=1; x<=numDays; x++) { if (currentDate.Day == x) { output.Write(""); output.Write("" + x.ToString() + ""); output.WriteLine(" | "); } else { output.Write(""); output.Write(""); output.Write(x.ToString() + ""); output.WriteLine(" | "); }
// 在每页中进行适当地分行 if (((firstDay+x) % 7) == 0) { output.WriteLine(" "); } }
output.WriteLine(" "); output.WriteLine(" | | "); }
public function get Date() : DateTime { return currentDate; } public function set Date(value:DateTime) { currentDate = value; }
public function get BackColor() : String { return backColor; } public function set BackColor(value:String) { backColor = value; }
public function get ForeColor() : String { return foreColor; } public function set ForeColor(value:String) { foreColor = value; }
public function LoadPostData(postDataKey:String, values:NamevalueCollection) : Boolean { var clientDate:String = values[UniqueID + "_CurrentDate"];
if (clientDate != null) { try { currentDate = DateTime.Parse(clientDate); } catch(e:Exception) { currentDate = DateTime.Now; } }
return false; }
public function RaisePostDataChangedEvent() : void {
} } }
-------------------------------------------------------------------------------------------------- ads.xml --------------------------------------------------------------------------------------------------
/quickstart/aspplus/images/banner1.gif http://www.microsoft.com Alt Text Computers 80
/quickstart/aspplus/images/banner2.gif http://www.microsoft.com Alt Text Computers 80
/quickstart/aspplus/images/banner3.gif http://www.microsoft.com Alt Text Computers 80
|