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

首頁 > 編程 > ASP > 正文

asp+語法教程(五)asp+的服務器端編程控件篇

2019-11-18 22:03:14
字體:
來源:轉載
供稿:網友
使用定制的服務器控件
asp+中提供了45個已經做好了的服務器控件,我們可以將他們象黑盒子一樣的使用。除此以外,開發者還可以使用任何第三方開發的服務器控件
在下面的例子中,我們要用到一個通過<acme:calendar runat=server>標簽聲明的組件,請注意,在文件的第一行必須使用<% Register %> 來聲明 "Acme xml "標簽的的前綴"Acme".在asp+ 文件中,將會使用這個命名的服務器控件的類的實例。
<%@ Register TagPRefix="Acme" Namespace="Acme" %>

<html>
<head>
<link rel="stylesheet"href="intro.CSS">
</head>

<script language="VB" runat=server>

Sub SubmitBtn_Click(Sender As Object, E As EventArgs)
Message.Text = "Hi " & Name.Text & ", you selected: " & Category.SelectedItem.Text & " on: " & MyCal.Date
End Sub

</script>

<body>

<center>

<form action="intro7.aspx" method="post" runat="server">

<asp:adrotator AdvertisementFile="ads.xml" BorderColor="black" BorderWidth=1 runat="server"/>

<h3> Name: <asp:textbox id="Name" runat="server"/>

Category: <asp:dropdownlist id="Category" runat=server>
<asp:listitem >psychology</asp:listitem>
<asp:listitem >business</asp:listitem>
<asp:listitem >popular_comp</asp:listitem>
</asp:dropdownlist>

<asp:button type=submit text="Lookup" OnClick="SubmitBtn_Click" runat="server"/>

<p>

<Acme:Calendar id="MyCal" runat=server/>

<p>

<asp:label id="Message" runat="server"/>

</form>

</center>

</body>
</html>

聲明Acme 的 文件
using System;
using System.Web;
using System.Web.UI;
using System.Collections;

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 Init()
{
// Todo: We should remove the need to call this
Page.RegisterRequiresPostBack(this);
Page.RegisterPostBackScript();

currentDate = DateTime.Now;

// Todo: Hack needed because COOL doesn't support array initializers yet
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 override void LoadState(Object viewState)
{
// If we've done a post-back, the old date will be available to us

if (null != viewState)
{
currentDate = DateTime.Parse((String) viewState);
}
}

public void RaisePostBackEvent(String eventArgument)
{
//Page.Response.Write("RaisePostBackEvent Called!!!");

if (eventArgument == null)
{
return;
}

// Keep track of old date (for event firing purposes)

DateTime oldDate = currentDate;

// Todo: We should have post-back take two arguments: eventname and eventarguments

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 SaveState()
{
// Save CurrentDate out as view state for postback scenarios

return currentDate.ToString();
}

protected override void Render(HtmlTextWriter output)
{
//Response.Write(Page.Request.UserAgent);

if (Page.Request.UserAgent.IndexOf("MSIE 5.5") != -1)
RenderUpLevel(output);
else
RenderDownLevel(output);
}

protected void RenderUpLevel(HtmlTextWriter output)
{
output.WriteLine("<input name='" + UniqueID + "_CurrentDate' id='" + UniqueID + "_CurrentDate' type=hidden>");
output.WriteLine("<span id='" + UniqueID + "'></span>");
output.WriteLine("<script language=jscript>drawcalendar('" + UniqueID + "', '" + Int32.Format(currentDate.Year, null) + "/" + Int32.Format(currentDate.Month, null) + "/" + Int32.Format(currentDate.Day, null) + "');</script>");
}

protected override void PreRender()
{
String DHTMLFunction = "";

DHTMLFunction += "<script language='javaScript'> /n";
DHTMLFunction += " function drawcalendar(calname, newDate) /n";
DHTMLFunction += " { /n";
DHTMLFunction += " var CurrentDate = new Date(newDate);/n";
DHTMLFunction += " var MonthArray = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');/n";
DHTMLFunction += " var MonthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);/n";
DHTMLFunction += " var calText;/n";
DHTMLFunction += " calText = '<table bgcolor=#dcdcdc border=0 height=190 valign=top>';/n";
DHTMLFunction += " calText = calText + '<tr><td>';/n";
DHTMLFunction += " calText = calText + '<center>';/n";
DHTMLFunction += " calText = calText + /"<a href='Javascript:drawcalendar(///"/" + calname + /"///", ///"/" + CurrentDate.getFullYear() + /"//" + CurrentDate.getMonth() + /"//" + CurrentDate.getDate() + /"///")'>/";/n";
DHTMLFunction += " calText = calText + '<img src=/quickstart/aspplus/images/left4.gif width=11 height=11 border=0></a>';/n";
DHTMLFunction += " calText = calText + ' <b>' + MonthArray[CurrentDate.getMonth()] + ' ' + CurrentDate.getFullYear() + '</b>';/n";
DHTMLFunction += " calText = calText + /" <a href='javascript:drawcalendar(///"/" + calname + /"///", ///"/" + CurrentDate.getFullYear() + /"//" + (CurrentDate.getMonth() + 2) + /"//" + CurrentDate.getDate() + /"///")'>/";/n";
DHTMLFunction += " calText = calText + '<IMG SRC=/quickstart/aspplus/images/right4.gif width=11 height=11 border=0></a>';/n";
DHTMLFunction += " calText = calText + '</center>';/n";
DHTMLFunction += " calText = calText + '</td></tr>';/n";
DHTMLFunction += " calText = calText + '<tr valign=top><td valign=top>';/n";
DHTMLFunction += " calText = calText + '<table border=1 bgcolor=#eeeeee height=160>';/n";
DHTMLFunction += " calText = calText + '<tr height=20>';/n";
DHTMLFunction += " calText = calText + ' <td align=right width=23> Sun </td>';/n";
DHTMLFunction += " calText = calText + ' <td align=right width=23> Mon </td>';/n";
DHTMLFunction += " calText = calText + ' <td align=right width=23> Tue </td>';/n";
DHTMLFunction += " calText = calText + ' <td align=right width=23> Wed </td>';/n";
DHTMLFunction += " calText = calText + ' <td align=right width=23> Thu </td>';/n";
DHTMLFunction += " calText = calText + ' <td align=right width=23> Fri </td>';/n";
DHTMLFunction += " calText = calText + ' <td align=right width=23> Sat </td>';/n";
DHTMLFunction += " calText = calText + '</tr>';/n";
DHTMLFunction += " calText = calText + '<tr>';/n";
DHTMLFunction += " var numDays = MonthDays[CurrentDate.getMonth()];/n";
DHTMLFunction += " var firstDay = new Date(1999, 8, 1).getDay();/n";
DHTMLFunction += " for (var x=0; x<firstDay; x++)/n";
DHTMLFunction += " {/n";
DHTMLFunction += " calText = calText + '<td align=right width=23></td>'/n";
DHTMLFunction += " }/n";
DHTMLFunction += " for (var x=1; x<=numDays; x++) /n";
DHTMLFunction += " { /n";
DHTMLFunction += " if (CurrentDate.getDate() == x) /n";
DHTMLFunction += " { /n";
DHTMLFunction += " calText = calText + '<td align=right width=23>';/n";
DHTMLFunction += " calText = calText + '<font color=red><b><u>' + x + '</u></b></font>';/n";
DHTMLFunction += " calText = calText + '</td>';/n";
DHTMLFunction += " }/n";
DHTMLFunction += " else /n";
DHTMLFunction += " { /n";
DHTMLFunction += " calText = calText + '<td align=right width=23>';/n";
DHTMLFunction += " calText = calText + /"<a href='javascript:drawcalendar(///"/" + calname + /"///", ///"/" + CurrentDate.getFullYear() + /"//" + (CurrentDate.getMonth()+1) + /"//" + x + /"///")'>/" + x + /"</a>/";";
DHTMLFunction += " calText = calText + '</td>';/n";
DHTMLFunction += " }/n";
DHTMLFunction += " if (((firstDay+x) % 7) == 0)/n";
DHTMLFunction += " {/n";
DHTMLFunction += " calText = calText + '</tr><tr>';/n";
DHTMLFunction += " }/n";
DHTMLFunction += " }/n";
DHTMLFunction += " calText = calText + '</tr>';";
DHTMLFunction += " calText = calText + '</table></td></tr></table>';";
DHTMLFunction += " var CalendarSpan = document.all(calname);";
DHTMLFunction += " if (CalendarSpan != null)";
DHTMLFunction += " CalendarSpan.innerHTML = calText;";
DHTMLFunction += " var CalendarValue = document.all(calname + '_CurrentDate');";
DHTMLFunction += " if (CalendarValue != null)";
DHTMLFunction += " CalendarValue.value = '' + (CurrentDate.getMonth() + 1) + '/' + CurrentDate.getDate() + '/' + CurrentDate.getFullYear();";
DHTMLFunction += " } /n";
DHTMLFunction += "</script>/n";

if (Page.Request.UserAgent.IndexOf("MSIE 5.5") != -1)
Page.RegisterClientScriptBlock("ACME_CALENDAR_DHTML", DHTMLFunction);
}

protected void RenderDownLevel(HtmlTextWriter output)
{
// Output Calendar Header

output.WriteLine("<table bgcolor=" + backColor + " border=0 height=190 valign=top><tr><td>");
output.WriteLine("<table bgcolor=" + backColor + " border=0 height=190 valign=top>");
output.WriteLine("<tr><td>");
output.WriteLine("<center>");
output.WriteLine(" <a href=/"javascript:" + Page.GetPostBackEventReference(this, "NavPrevMonth") + "/">");
output.WriteLine("<img src=/quickstart/aspplus/images/left4.gif width=11 height=11 border=0></a>");
output.WriteLine(" <b>" + monthNames[currentDate.Month-1] + " " + Int32.Format(currentDate.Year, null) + "</b>");
output.WriteLine(" <a href=/"javascript:" + Page.GetPostBackEventReference(this, "NavNextMonth") + "/">");
output.WriteLine("<IMG SRC=/quickstart/aspplus/images/right4.gif width=11 height=11 border=0></a>");
output.WriteLine("</center>");
output.WriteLine("</td></tr>");
output.WriteLine("<tr valign=top><td valign=top>");
output.WriteLine("<table border=1 bgcolor=" + foreColor + " height=160>");
output.WriteLine("<tr height=20>");
output.WriteLine(" <td align=right width=23> Sun </td>");
output.WriteLine(" <td align=right width=23> Mon </td>");
output.WriteLine(" <td align=right width=23> Tue </td>");
output.WriteLine(" <td align=right width=23> Wed </td>");
output.WriteLine(" <td align=right width=23> Thu </td>");
output.WriteLine(" <td align=right width=23> Fri </td>");
output.WriteLine(" <td align=right width=23> Sat </td>");
output.WriteLine("</tr>");
output.WriteLine("<tr>");

// Calculate how many days are in the month

int numDays = DateTime.DaysInMonth(currentDate.Year, currentDate.Month);

// Calculate what day of week the first day of the month is on

int firstDay = new DateTime(currentDate.Year, currentDate.Month, 1).DayOfWeek;

// Pre-Day Padding

for (int x=0; x<firstDay; x++)
{
output.WriteLine("<td align=right width=23></td>");
}

// Output each day

for (int x=1; x<=numDays; x++)
{
if (currentDate.Day == x)
{
output.Write("<td align=right width=23>");
output.Write("<font color=red><b><u>" + Int32.Format(x, null) + "</u></b></font>");
output.WriteLine("</td>");
}
else
{
output.Write("<td align=right width=23>");
output.Write("<a href=/"javascript:" + Page.GetPostBackEventReference(this, Int32.Format(x, null)) + "/">");
output.Write(Int32.Format(x, null) + "</a>");
output.WriteLine("</td>");
}

// PerPage row break as appropriate
if (((firstDay+x) % 7) == 0)
{
output.WriteLine("</tr><tr>");
}
}

output.WriteLine("</tr>");
output.WriteLine("</table></td></tr></table></table>");
}

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;
}
}

// Todo: We should eliminate the need for a control developer to do stub
// implementations of the below standard IPostDataHandler Methods

public bool LoadPostData(String postDataKey, NameValueCollection values)
{
String clientDate = values[UniqueID + "_CurrentDate"];

if (clientDate != null)
currentDate = DateTime.Parse(clientDate);

return false;
}

public void RaisePostDataChangedEvent()
{

}
}
}

生成服務器控件的文件

csc /t:library /r:System.Web.dll /r:System.dll /out:../../../bin/Acme.dll Acme.cs
csc /t:library /out:../../../bin/WebMarket.dll WebMarket.cs

這個例子的演示在
http://tutorial.superexpert.com/quickstart/aspplus/samples/webforms/intro/intro7.aspx
這個日歷的服務器控件可以同時支持高級和低級的瀏覽器,對于高級的瀏覽器,他在客戶端生成DHTML 代碼,DHTML 文檔不需要和服務器進行交互!對于低級的瀏覽器,則生成標準的 HTML 3.2 的代碼,這個時候需要和服務器的交互來處理瀏覽器客戶端的用戶操作
注意:這個頁面的代碼的開發者在書寫的過程中,開發者不需要關心客戶瀏覽器是高級的還是低級的。日歷控件自己會處理兩種瀏覽器之間的差別
下一講,我們將要進入asp+ 操作 數據庫 的章節,請大家隨時留意我們的站點更新!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久国产精品一区| 亚洲乱码国产乱码精品精天堂| 久久在线免费视频| 国产欧美欧洲在线观看| 日本国产一区二区三区| 亚洲综合第一页| 亚洲天堂第二页| 欧美裸体xxxx极品少妇软件| 久久99热精品这里久久精品| 欧美大肥婆大肥bbbbb| 欧美电影免费播放| 在线观看久久久久久| 欧美国产视频日韩| 91成品人片a无限观看| 韩国三级电影久久久久久| 夜色77av精品影院| 视频一区视频二区国产精品| 国产一区二区av| 欧美激情亚洲视频| 91免费观看网站| 欧美日韩国产精品| 欧美国产高跟鞋裸体秀xxxhd| 欧美日产国产成人免费图片| 色七七影院综合| 久久av资源网站| 亚洲精品视频播放| 色www亚洲国产张柏芝| 中国china体内裑精亚洲片| 在线亚洲男人天堂| 夜夜躁日日躁狠狠久久88av| 亚洲精品久久久久中文字幕二区| 日韩欧美中文免费| 亚洲黄色av网站| 国产精品青草久久久久福利99| 久久久亚洲精品视频| 亚洲精品美女久久久| 亚洲人成77777在线观看网| 欧美猛交免费看| 欧美激情区在线播放| 久久99精品国产99久久6尤物| 不用播放器成人网| 亚洲一区免费网站| 日韩中文在线不卡| 国产福利精品av综合导导航| 久久亚洲欧美日韩精品专区| 国产91精品久久久久久| 日韩av电影在线免费播放| 97香蕉超级碰碰久久免费软件| 91精品国产乱码久久久久久久久| 国产人妖伪娘一区91| 国产一区二区av| 欧美激情一二区| 亚洲天堂一区二区三区| 日本精品一区二区三区在线| 亚洲自拍偷拍第一页| 粉嫩av一区二区三区免费野| 欧美成人免费va影院高清| 国产精品久久久久久久天堂| 亚洲伊人一本大道中文字幕| 国产精品视频午夜| 欧美亚洲成人精品| 午夜精品美女自拍福到在线| 超碰精品一区二区三区乱码| 一本色道久久88综合亚洲精品ⅰ| 久久综合免费视频影院| 亚洲美女在线看| 国产精品成人一区二区三区吃奶| 亚洲自拍偷拍第一页| 欧美性高潮床叫视频| 亚州av一区二区| 在线播放国产一区中文字幕剧情欧美| 欧美精品精品精品精品免费| 亚洲欧美成人精品| 久久精品亚洲国产| 日韩欧美成人免费视频| 色99之美女主播在线视频| 国产精品色悠悠| 亚洲精品美女免费| 久久躁日日躁aaaaxxxx| 精品中文字幕乱| 精品无人国产偷自产在线| 亚洲综合自拍一区| 中文日韩在线观看| 亚洲第一国产精品| 97人人爽人人喊人人模波多| 国产精品自拍视频| 久久久久成人精品| 亚洲欧洲激情在线| 成人有码视频在线播放| 高跟丝袜欧美一区| 狠狠色狠狠色综合日日小说| 91久久精品日日躁夜夜躁国产| 欧美性xxxx极品hd满灌| 91精品国产高清自在线| 18性欧美xxxⅹ性满足| 欧美精品福利视频| 国产亚洲精品成人av久久ww| 精品久久久久久久久久久| 久久精品成人动漫| 亚洲a区在线视频| 中文欧美日本在线资源| 日韩在线视频网| 亚洲美女精品久久| 亚洲奶大毛多的老太婆| 国产精品一区二区久久| 色阁综合伊人av| 欧美国产日韩一区| 97成人在线视频| 91精品久久久久久久久久另类| 欧美国产精品va在线观看| 国产美女精品免费电影| 另类美女黄大片| 色琪琪综合男人的天堂aⅴ视频| 欧美性感美女h网站在线观看免费| 日韩高清不卡av| 欧美日韩中文在线观看| 日韩av日韩在线观看| 亚洲国产另类久久精品| 欧美亚洲激情在线| 91在线观看免费高清| 亚洲欧美精品在线| 久久中文字幕国产| 久久久国产精品免费| 久久久久一本一区二区青青蜜月| 亚洲国产精品人人爽夜夜爽| 国产精品视频yy9099| 欧美日本在线视频中文字字幕| 欧美伦理91i| 在线观看欧美www| 精品免费在线视频| 国产精品一区二区久久| 97精品国产97久久久久久| 91精品久久久久久久久久| 亚洲精品av在线播放| 亚洲第一天堂av| 久久久久久久久久国产精品| 麻豆乱码国产一区二区三区| 国产在线视频不卡| 亚洲免费视频在线观看| 欧美一级高清免费播放| 欧洲精品在线视频| 国产精品视频区1| 在线日韩日本国产亚洲| 日韩精品免费在线观看| 激情亚洲一区二区三区四区| 欧美成人免费播放| 91高潮在线观看| 国产成人短视频| 国产成人激情视频| 欧美激情视频在线免费观看 欧美视频免费一| 韩国三级电影久久久久久| 成人在线一区二区| 2019中文字幕在线免费观看| 亚洲高清在线观看| 国产ts人妖一区二区三区| 国产一区二区三区直播精品电影| 国内精品久久久久影院优| 91在线精品播放| 欧美成人精品三级在线观看| 97成人在线视频| 国产精品小说在线| 一区二区三区国产视频| 欧美第一黄网免费网站| xxxxx成人.com|