1. Trang chủ
  2. » Công Nghệ Thông Tin

ASP.NET 4 Unleased - p 24 ppsx

10 342 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 482,96 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Displaying Advertisements The AdRotator control enables you to randomly display different advertisements in a page.. You can provide each banner advertisement with a keyword and then fil

Trang 1

CHAPTER 4 Using the Rich Controls

protected void calSchedule_DayRender(object sender, DayRenderEventArgs e)

{

if (schedule.FindRows(e.Day.Date).Length > 0)

e.Cell.BackColor = System.Drawing.Color.Yellow;

}

</script>

<html xmlns=”http://www.w3.org/1999/xhtml” >

<head id=”Head1” runat=”server”>

<title>Calendar Database</title>

</head>

<body>

<form id=”form1” runat=”server”>

<div>

<asp:Calendar

id=”calSchedule”

OnDayRender=”calSchedule_DayRender”

Runat=”server” />

<br />

<asp:FormView

id=”frmSchedule”

AllowPaging=”True”

DataKeyNames=”EntryDate”

DataSourceID=”srcSchedule”

Runat=”server”>

<EmptyDataTemplate>

<asp:LinkButton

id=”btnNew”

Text=”Add Entry”

CommandName=”New”

Runat=”server” />

</EmptyDataTemplate>

<ItemTemplate>

<h1><%# Eval(“EntryDate”, “{0:D}”) %></h1>

<%# Eval(“Entry”) %>

<br /><br />

<asp:LinkButton

Id=”btnEdit”

Text=”Edit Entry”

CommandName=”Edit”

Runat=”server” />

<asp:LinkButton

Id=”lnkDelete”

Trang 2

Text=”Delete Entry”

CommandName=”Delete”

OnClientClick=”return confirm(‘Delete entry?’);”

Runat=”server” />

</ItemTemplate>

<EditItemTemplate>

<asp:Label

id=”lblEntry”

Text=”Entry:”

AssociatedControlID=”txtEntry”

Runat=”server” />

<br />

<asp:TextBox

id=”txtEntry”

Text=’<%#Bind(“Entry”) %>’

TextMode=”MultiLine”

Columns=”40”

Rows=”8”

Runat=”server” />

<br />

<asp:LinkButton

id=”btnUpdate”

Text=”Update”

CommandName=”Update”

Runat=”server” />

</EditItemTemplate>

<InsertItemTemplate>

<asp:Label

id=”lblEntry”

Text=”Entry:”

AssociatedControlID=”txtEntry”

Runat=”server” />

<br />

<asp:TextBox

id=”txtEntry”

Text=’<%#Bind(“Entry”) %>’

TextMode=”MultiLine”

Columns=”40”

Rows=”8”

Runat=”server” />

<br />

<asp:Button

id=”btnInsert”

Text=”Insert”

CommandName=”Insert”

Runat=”server” />

Trang 3

CHAPTER 4 Using the Rich Controls

</InsertItemTemplate>

</asp:FormView>

<asp:SqlDataSource

id=”srcSchedule”

ConnectionString=”Server=.\SQLExpress;Integrated Security=True;

AttachDbFileName=|DataDirectory|ScheduleDB.mdf;User Instance=True”

SelectCommand=”SELECT EntryDate,Entry FROM Schedule WHERE

➥EntryDate=@EntryDate”

InsertCommand=”INSERT Schedule (EntryDate,Entry) VALUES

➥(@EntryDate,@Entry)”

UpdateCommand=”UPDATE Schedule SET Entry=@Entry WHERE EntryDate=@EntryDate”

DELETECommand=”DELETE Schedule WHERE EntryDate=@EntryDate”

Runat=”server”>

<SelectParameters>

<asp:ControlParameter

Name=”EntryDate”

ControlID=”calSchedule”

PropertyName=”SelectedDate” />

</SelectParameters>

<InsertParameters>

<asp:ControlParameter

Name=”EntryDate”

ControlID=”calSchedule”

PropertyName=”SelectedDate” />

</InsertParameters>

</asp:SqlDataSource>

<asp:SqlDataSource

id=”srcCalendar”

ConnectionString=”Server=.\SQLExpress;Integrated Security=True;

AttachDbFileName=|DataDirectory|ScheduleDB.mdf;User Instance=True”

SelectCommand=”SELECT EntryDate FROM Schedule”

Runat=”server”>

</asp:SqlDataSource>

</div>

</form>

</body>

</html>

The page in Listing 4.10 saves and loads entries from a SQL Express database named

ScheduleDB The contents of the schedule are contained in a table named Schedule that

has the following schema:

Trang 4

The tricky part in Listing 4.10 is the code for highlighting the current entries in the

calen-dar In the Page_PreRender event handler, a list of all the current entries is retrieved from

the database The list is represented by a DataView object

The DayRender event is raised when the Calendar renders each day (table cell) In the

DayRender event handler in Listing 4.10, if an entry is in the database that corresponds to

the day being rendered, the day is highlighted with a yellow background color

Displaying Advertisements

The AdRotator control enables you to randomly display different advertisements in a

page You can store the list of advertisements in either an XML file or in a database table

The AdRotator control supports the following properties (this is not a complete list):

AdvertisementFile—Enables you to specify the path to an XML file that contains a

list of banner advertisements

AlternateTextField—Enables you to specify the name of the field for displaying

alternate text for the banner advertisement image The default value is

AlternateText

DataMember—Enables you to bind to a particular data member in the data source

DataSource—Enables you to specify a data source programmatically for the list of

banner advertisements

DataSourceID—Enables you to bind to a data source declaratively

ImageUrlField—Enables you to specify the name of the field for the image URL for

the banner advertisement The default value for this field is ImageUrl

KeywordFilter—Enables you to filter advertisements by a single keyword

NavigateUrlField—Enables you to specify the name of the field for the

advertise-ment link The default value for this field is NavigateUrl

Target—Enables you to open a new window when a user clicks the banner

advertisement

The AdRotator control also supports the following event:

AdCreated—Raised after the AdRotator control selects an advertisement but before

the AdRotator control renders the advertisement

Trang 5

CHAPTER 4 Using the Rich Controls

The AdRotator control includes a KeywordFilter property You can provide each banner

advertisement with a keyword and then filter the advertisements displayed by the

AdRotator control by using the value of the KeywordFilter property

This property can be used in multiple ways For example, if you display more than one

advertisement in the same page, you can filter the advertisements by page regions You

can use the KeywordFilter to show the big banner advertisement on the top of the page

and box ads on the side of the page

You can also use the KeywordFilter property to filter advertisements by website section

For example, you might want to show different advertisements on your website’s home

page than on your website’s search page

NOTE

If you cache a page that contains an AdRotator control, the AdRotator control is

excluded from the cache In other words, even if you cache a page, randomly selected

banner advertisements still display The AdRotator control takes advantage of a

fea-ture of the ASP.NET Framework called post-cache substitution You learn more about

this feature in Chapter 29, “Caching Application Pages and Data.”

Storing Advertisements in an XML File

You can store the list of advertisements that the AdRotator displays in an XML file by

setting the AdRotator control’s AdvertisementFile property For example, the page in

Listing 4.11 contains three AdRotator controls that retrieve banner advertisements from

an XML file named AdList.xml (see Figure 4.8)

LISTING 4.11 AdRotatorXML.aspx

<%@ Page Language=”C#” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml” >

<head id=”Head1” runat=”server”>

<style type=”text/css”>

html

{

background-color:silver;

}

.content

{

background-color:white;

padding:10px;

border:solid 1px black;

margin:auto;

width:400px;

Trang 6

text-align:center;

}

.box

{

float:right;

padding:10px;

border-left:solid 1px black;

}

.clear

{

clear:both;

}

</style>

<title>AdRotator XML</title>

</head>

<body>

<form id=”form1” runat=”server”>

<div class=”content”>

<asp:AdRotator

id=”AdRotator1”

AdvertisementFile=”~/App_Data/AdList.xml”

KeywordFilter=”banner”

CssClass=”banner”

Runat=”server” />

<br />

<div class=”box”>

<asp:AdRotator

id=”AdRotator2”

AdvertisementFile=”~/App_Data/AdList.xml”

KeywordFilter=”box”

Runat=”server” />

<br /><br />

<asp:AdRotator

id=”AdRotator3”

AdvertisementFile=”~/App_Data/AdList.xml”

KeywordFilter=”box”

Runat=”server” />

</div>

<br />Here is the body text in the page

<br />Here is the body text in the page

<br />Here is the body text in the page

Trang 7

CHAPTER 4 Using the Rich Controls

<br />Here is the body text in the page

<br class=”clear” />

</div>

</form>

</body>

</html>

FIGURE 4.8 Displaying advertisements from an XML file

The page in Listing 4.11 contains an AdRotator control that displays a banner

advertise-ment at the top of the page The page also contains two AdRotator controls that display

box advertisements on the right of the page

The first AdRotator has a KeyworldFilter property that has the value banner, and the

remaining two AdRotator controls have KeywordFilter properties with the value box The

first AdRotator displays only banner advertisements, and the remaining two AdRotator

controls display only box advertisements

All three AdRotator controls get their list of banner advertisements from a file named

AdList.xml This file is located in the App_Data folder for security reasons The files in the

App_Data folder cannot be opened in a web browser

Trang 8

NOTE

There is nothing wrong with assigning different XML files to different AdRotator

con-trols For example, you could create distinct BannerAd.xml and BoxAd.xml files, and

then you would not have to worry about the KeywordFilter property

The file in Listing 4.12 contains the contents of the AdList.xml file

LISTING 4.12 AdList.xml

<?xml version=”1.0” encoding=”utf-8” ?>

<Advertisements>

<! Banner Advertisements >

<Ad>

<ImageUrl>~/Ads/BannerAd1.gif</ImageUrl>

<Width>300</Width>

<Height>50</Height>

<NavigateUrl>http://www.AspWorkshops.com</NavigateUrl>

<AlternateText>Banner Advertisement 1</AlternateText>

<Impressions>50</Impressions>

<Keyword>banner</Keyword>

</Ad>

<Ad>

<ImageUrl>~/Ads/BannerAd2.gif</ImageUrl>

<Width>300</Width>

<Height>50</Height>

<NavigateUrl>http://www.AspWorkshops.com</NavigateUrl>

<AlternateText>Banner Advertisement 2</AlternateText>

<Impressions>25</Impressions>

<Keyword>banner</Keyword>

</Ad>

<Ad>

<ImageUrl>~/Ads/BannerAd3.gif</ImageUrl>

<Width>300</Width>

<Height>50</Height>

<NavigateUrl>http://www.AspWorkshops.com</NavigateUrl>

<AlternateText>Banner Advertisement 3</AlternateText>

<Impressions>25</Impressions>

<Keyword>banner</Keyword>

</Ad>

<! Box Advertisements >

<Ad>

<ImageUrl>~/Ads/BoxAd1.gif</ImageUrl>

<Width>150</Width>

Trang 9

CHAPTER 4 Using the Rich Controls

<Height>150</Height>

<NavigateUrl>http://www.AspWorkshops.com</NavigateUrl>

<AlternateText>Box Advertisement 1</AlternateText>

<Impressions>50</Impressions>

<Keyword>box</Keyword>

</Ad>

<Ad>

<ImageUrl>~/Ads/BoxAd2.gif</ImageUrl>

<Width>150</Width>

<Height>150</Height>

<NavigateUrl>http://www.AspWorkshops.com</NavigateUrl>

<AlternateText>Box Advertisement 2</AlternateText>

<Impressions>50</Impressions>

<Keyword>box</Keyword>

</Ad>

</Advertisements>

The Impressions attribute in the file in Listing 4.12 determines how often each banner

advertisement displays For example, the first banner advertisement displays 50% of the

time, and the remaining two banner advertisements display 25% of the time

Storing Advertisements in a Database Table

Rather than store the list of advertisements in an XML file, you can store the list in a

data-base table For example, the AdRotator control contained in Listing 4.13 is bound to a

SqlDataSource control The SqlDataSource control represents the contents of a database

table named AdList, which is located in a SQL Express database named AdListDB

LISTING 4.13 AdRotatorDatabase.aspx

<%@ Page Language=”C#” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml” >

<head id=”Head1” runat=”server”>

<title>AdRotator Database</title>

</head>

<body>

<form id=”form1” runat=”server”>

<div>

<asp:AdRotator

id=”AdRotator1”

DataSourceID=”srcAds”

Trang 10

Runat=”server” />

<asp:SqlDataSource

id=”srcAds”

ConnectionString=”Server=.\SQLExpress;Integrated Security=True;

AttachDbFileName=|DataDirectory|AdListDB.mdf;User Instance=True”

SelectCommand=”SELECT ImageUrl, Width, Height, NavigateUrl, AlternateText,

Keyword, Impressions

FROM AdList”

Runat=”server” />

</div>

</form>

</body>

</html>

To use the page in Listing 4.13, you need to create the AdList database table This table

has the following schema:

NavigateUrl Varchar(250)

AlternateText NVarchar(100)

The columns in the AdList database table correspond to the attributes in the AdList.xml

file discussed in the previous section

Tracking Impressions and Transfers

Normally, when you display advertisements, you do it to make money Your advertisers

want statistics on how often their advertisements display (the number of impressions) and

how often their advertisements are clicked (the number of transfers)

To track the number of times that an advertisement displays, you need to handle the

AdRotator control’s AdCreated event To track the number of times that an advertisement

is clicked, you need to create a redirect handler

Ngày đăng: 06/07/2014, 18:20

TỪ KHÓA LIÊN QUAN