亚洲香蕉成人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
最近2019年中文视频免费在线观看| 国产精品专区第二| 曰本色欧美视频在线| 亚洲性生活视频在线观看| 亚洲奶大毛多的老太婆| 欧美午夜精品久久久久久浪潮| 91精品美女在线| 26uuu另类亚洲欧美日本老年| 国产精品亚洲精品| 成人免费在线网址| 亚洲第一页中文字幕| 青青草国产精品一区二区| 2023亚洲男人天堂| 精品一区二区三区三区| 成人有码在线播放| 久久精品视频导航| 欧美激情亚洲精品| 粉嫩av一区二区三区免费野| 日韩电影中文字幕一区| 欧美日韩在线视频一区| 三级精品视频久久久久| 91精品国产高清自在线看超| 亚洲激情视频在线播放| 中文字幕最新精品| 欧美午夜精品在线| 一区二区福利视频| 日韩中文字幕精品| 亚洲色图狂野欧美| 亚洲精品国产综合久久| 中文国产成人精品久久一| 欧美裸身视频免费观看| 国产精品h片在线播放| 日韩亚洲精品视频| 国产精品免费久久久| 成人xxxxx| 国模视频一区二区三区| 日韩成人av在线| 午夜精品久久久久久久99黑人| 色综合五月天导航| 欧美精品一区三区| 国产精品视频网| 久久精品99久久久久久久久| 欧美日韩国产色视频| 国产精品h片在线播放| 91在线无精精品一区二区| 热99精品只有里视频精品| 精品亚洲一区二区三区在线观看| 精品亚洲aⅴ在线观看| 久久99久久久久久久噜噜| 久久久久久亚洲精品| 欧美亚洲午夜视频在线观看| 一本一道久久a久久精品逆3p| 欧美精品福利视频| 日本19禁啪啪免费观看www| 欧美亚洲一区在线| 国产精品一区二区av影院萌芽| 成人写真视频福利网| 国产精品欧美久久久| 久久久精品2019中文字幕神马| 91精品国产99久久久久久| 国产欧美精品日韩| 国产91免费看片| 亚洲欧美中文字幕在线一区| 亚洲国产成人久久综合| 久久久久久久影院| 日韩va亚洲va欧洲va国产| 国产成人亚洲综合青青| 亚洲九九九在线观看| 成人看片人aa| 最近中文字幕2019免费| 国产日韩欧美视频| 亚洲最大的网站| 97香蕉超级碰碰久久免费的优势| 亚洲免费av电影| 欧美日韩亚洲精品内裤| 成人av在线网址| www.日韩欧美| 北条麻妃一区二区在线观看| 亚洲女同性videos| 国产成人精品999| 91亚洲精品在线观看| 欧美色视频日本高清在线观看| 韩国国内大量揄拍精品视频| 亚洲免费成人av电影| 国产日韩在线精品av| 久久免费在线观看| 亚洲精品国产成人| 国产精品久久久久久久久久ktv| 日韩精品在线观看一区| 欧美另类交人妖| 国产精品www| 俺去了亚洲欧美日韩| 国产97色在线|日韩| 国产福利视频一区二区| 亚洲第一免费播放区| 日韩免费观看高清| 久久久天堂国产精品女人| 欧美激情一区二区三区久久久| 精品中文字幕在线观看| 夜夜狂射影院欧美极品| 91美女高潮出水| 久久久在线视频| 欧美精品videossex性护士| 精品久久久av| 欧美日韩一区免费| www.日韩系列| 亚洲国产成人久久| 国产精品爱久久久久久久| 7777精品久久久久久| 久久久999国产精品| 8050国产精品久久久久久| 久久人人爽人人爽人人片av高清| 国产日韩欧美在线播放| 91青草视频久久| 日韩欧美中文在线| 日韩免费在线观看视频| 亚洲人精品午夜在线观看| 国产欧美日韩免费| 欧美日本高清一区| 色噜噜狠狠色综合网图区| 日韩精品在线观看视频| 亚洲国产精彩中文乱码av| 国产丝袜一区视频在线观看| 精品国产欧美一区二区五十路| 欧亚精品中文字幕| 91久久精品视频| 亚洲香蕉av在线一区二区三区| 国产+成+人+亚洲欧洲| 亚洲日本欧美日韩高观看| 亚洲第一天堂无码专区| 久久久久在线观看| 91精品综合久久久久久五月天| 久久久国产精品x99av| 国产精品亚洲视频在线观看| 日韩免费av片在线观看| 亚洲天堂av综合网| 激情懂色av一区av二区av| 亚洲精品福利在线| 麻豆国产精品va在线观看不卡| 午夜精品国产精品大乳美女| 国产日韩av在线| 久久久久久久久亚洲| 亚洲欧美日韩中文在线| 欧美视频在线视频| 中文国产亚洲喷潮| 在线播放国产一区中文字幕剧情欧美| 欧美日韩国产一区在线| 国产欧美在线看| 国产精品入口免费视| 77777少妇光屁股久久一区| 久久福利网址导航| 中文字幕精品影院| 韩国三级日本三级少妇99| 欧美色图在线视频| 国产精品普通话| 亚洲综合中文字幕在线| 91豆花精品一区| 日韩女优在线播放| 久久久久久久激情视频| 美日韩精品免费视频| 成人免费xxxxx在线观看| 粉嫩老牛aⅴ一区二区三区| 久久久久久久久久久久久久久久久久av| 亚州国产精品久久久|