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

Tài liệu Tài liệu đào tạo ASP.NET pdf

59 469 3
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tài liệu Đào tạo ASP.NET
Trường học Hanoi University of Science and Technology
Chuyên ngành Information Technology
Thể loại Tài liệu đào tạo
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 59
Dung lượng 1,14 MB

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

Nội dung

Using JavaScript Along with ASP.NET...15 III.1 Adding JavaScript to a Server Control...15 III.2 Performing a Simple Button-rollover...17 III.3 Setting Control Focus...18 III.4 Changing t

Trang 1

Công ty Hệ thống thông tin FPT

TÀI LIỆU ĐÀO TẠO ASP.NET

Hà nội, 09/2009

Trang 2

Mục lục

I Nền tảng lập trình web 1

Web Programming 2

II ASP.NET 3

III Using JavaScript Along with ASP.NET 15

III.1 Adding JavaScript to a Server Control 15

III.2 Performing a Simple Button-rollover 17

III.3 Setting Control Focus 18

III.4 Changing the Control Focus Dynamically 18

III.5 Using Larger JavaScript Functions 18

III.5.1 RegisterStartupScript Method 19

III.5.2 RegisterClientScriptBlock Method 20

III.5.3 The Difference Between RegisterStartupScript and RegisterClientScriptBlock 22

III.6 Keeping JavaScript in a Separate File (.js) 22

IV Data Access: 23

SqlDataReader 23

SqlParameter 24

Close Connection 24

When good connections go bad 24

IIS 6 on Windows 2003 Server 25

V Microsoft Data Access Application Block 27

V.1 Introduction: 27

V.2 Using Microsoft net Data Access Application Block: 27

V.3 Accessing data without Data Access Application Block: 27

V.4 Retrieving Multiple Rows using SqlDataReader and Data Access Application Block: 28

V.5 Retrieving Multiple Rows using DataSet: 28

V.6 Retrieving a Single Row 28

V.6.1 Stored Proc: 29

Trang 3

V.7 Explanation of the code: 29

V.8 Retrieving XML Data: 30

V.9 Explanation of the Code: 30

VI Directory and File Access 30

Trang 5

Web Programming

Modern Information Processing

Trang 6

Components of a Web Page

II ASP.NET

ASP.NET Environment

 ASP.NET has a rich set of objects to work with in an object-oriented and compiled programming environment

 The programming environment supports more than 25 NET

languages, including built-in support for VB.NET, C#, and

JScript.NET

 Net frame work

Trang 7

Page Structure

Server Controls and Script Processing

Form Submission

The <form> Control:

Web form controls are enclosed within a single <form> tag in the

format shown below:

<form runat="server">

.server controls and HTML code

</form>

Input Controls

<asp:Textbox/> <input type="text"> <textarea> </textarea>

<asp:RadioButton/>

<asp:RadioButtonList> <input type="radio">

<asp:CheckBox/> <input type="checkbox">

Trang 8

<asp:DropDownList/>

<asp:ListBox> <select> </select>

CheckBoxList:

pCtrl, string pCommandText, string pValueField, string

DropDownListControl:

pCtrl, string pCommandText, string pValueField, string

pTextField, bool pRowBlank)

{

try

{

DataTable dt=clsCommon.GetDataTable(pCommandText);

Trang 9

Script Activation Controls

Scripts can be activated by user events surrounding the Web page Certain controls,

then, are provided for trapping those events and taking action on them The primary example of a script activation control is the <asp:Button> control The user clicks the button; a subroutine is called in response

Script activation controls come packaged with event handlers to trap and take action on user events The most common event is a mouse click on a button; the most common event handler is the OnClick handler associated with the button For example, the

following button definition,

<asp:Button Text="Submit" onClick=" Display_Output " runat="server"/>

displays a button control with the label "Submit." It includes an OnClick event handler which makes the button sensitive to a mouse click When the button is clicked, the event handler calls the Display_Output subprogram and that script is run

There are a number of server controls designed for the purpose of trapping user events and responding to them The following controls are discussed in these tutorials:

<asp:Button/> <input type="button">

<asp:ImageButton/> <input type="image">

<asp:LinkButton/> <input type="button">

<asp:HyperLink/> <a href>

Script Activation Events

Trang 10

Scripts can be run in response to Web page events as well as to user events A key page event is the load event, which occurs when the page is first retrieved by theserver in response to a URL request At the same time, there are two conditions

under which a page is loaded On the one hand, it can be an initial page-load event

the first time the page is retrieved in response to a URL request; or, it can be a

post-back event a reloading of the same page on form submission These two

page-load events can be, and often are, programmed separately

<SCRIPT runat="server">

Sub Page_Load()

If Not Page.IsPostBack Then

do this on initial page load

run only the first time the page is loaded, not when responding to a user event to reload the page, say when a button is clicked to submit a form Many of the scripts in

these tutorials differentiate between initial page load and post-back load events.Information Display Controls

There are three special controls that have no equivalence among standard form tags These controls are unique to ASP.NET and are designed to ease and to automate the display of complex information Most often these controls are used to display tables of data from databases They are designed so that

minimal coding is required to extract information from those tables and format

it for display We'll leave discussion of these controls for later.

Web Form Control Equivalent HTML Tag

<asp:Repeater> (none)

<asp:DataGrid> (none)

<asp:DataList> (none)

The Page ViewState

This repopulation of controls with submitted values occurs through the page's View State

The View State is the status of the page when it is submitted to the server ASP.NET

maintains this status through a hidden field that it places on pages containing form controls If you take a look at the browser's source listing you will see this hidden field, named

" VIEWSTATE", and its encoded value that looks something like the following:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">

<input type="hidden" name=" VIEWSTATE"

value="dDwtMTI3OTMzNDM4NDs7PqIp6fnWsFyownq1sZyOLgKFOBwj" />

</form>

Trang 11

Maintaining Variables on PostBack

<asp:TextBox id="CounterOut" Columns="2" runat="server" />

<asp:Button Text="Add to Counter" OnClick="Add_To_Counter"

runat="server" />

Session Variables

There is a second method of retaining the values of variables between page postings This method also maintains values between different pages

A user Session is created by ASP.NET whenever a visitor arrives at any Web page located in

your root application directory A Session Object maintains identification information about thevisitor and allows ASP.NET to differentiate between visitors and their browsing status as they navigate the Web site Your visit to this tutorial site, for instance, is identified by the

SessionID value

ArrayList/Datasource

An ArrayList can be bound to any of the list controls In the following examples the previous ColorList array is bound to CheckBoxList, DropDownList, and ListBox controls simply by setting their DataSource properties and calling their DataBind() methods.

<asp:ListBox id="ListBox"

runat="server" />

ListBox.DataSource = ColorList ListBox.DataBind()

Binding a DataSet to Controls

Trang 12

A DataSet, like a HashTable and SortedList, can provide the text labels and values that arebound to list controls In the following example, the four list controls are defined without their asp:ListItem entries This code is identical to that used to bind to previous list controls.

asp:RadioButtonList asp:CheckBoxList asp:DropDownList asp:ListBox AltaVista

Go to Site Go to Site Go to Site Go to Site

Binding a Hashtable to Controls

A HashTable can be used to provide the text labels and values that are automatically assigned to list controls: asp:RadioButtonList, asp:CheckBoxList, asp:DropDownList, and asp:Listbox In the following example, these four list controls are defined without their

asp:ListItem entries, and buttons are provided for scripting page transfers to the selectedURLs:

asp:RadioButtonList asp:CheckBoxList asp:DropDownList asp:ListBox Lycos

Go to Site Go to Site Go to Site Go to Site

Information Display Controls

Trang 16

33333Microsoft XP Upgrade

$145.95

Source: Products Database

DataGrid Control

Product Name Product Price* Availability

Adobe Photoshop 345.95 In Stock

Microsoft XP Upgrade 99.95 In Stock

MacroMedia DreamWeaver 145.95 In Stock

Trang 17

*Average Street Price As of 09-23-2009

Displaying Calculated Values

Calculations for a Repeater Control

Summations for a Repeater Control

11111 Adobe Photoshop 345.95 10 3,459.50

Trang 18

Calculations for a DataGrid

Trang 19

III Using JavaScript Along with ASP.NET

III.1 Adding JavaScript to a Server Control

It is quite easy to add JavaScript to a specific server control that resides on an ASP.NET page Let's take a look at the button server control as an example If you drag and drop a Button HTML server control (HtmlInputButton Class) onto a page using either Microsoft Visual Studio® NET or the ASP.NET Web Matrix and run it as a server control, it should have the following construction:

<INPUT type="button" value="Button" runat="server"

id="Button1">

This is a normal button that can be programmatically manipulated

in the code-behind or server-side script of an ASP.NET page For example, to assign the button text when the page is generated,

simply use the value property of the button after this element is

turned into an HTML server control (right-click on the control and

select Run As Server Control).

Visual C# NET

void Page_Load(object sender, EventArgs e) {

Button1.Value = DateTime.Now.ToString();

}

This simply provides a button on the page that shows a date and time as the text of the button.

Figure 1 Showing the date and time on a button

It is important to note that the ASP.NET page here gets the time from the server that generated the page So if the Web server sits somewhere in the Central Time Zone of the United States (CST -6 GMT), then everyone who requests this page will get the same time no matter where they reside in the world.

Trang 20

What if you wanted the button to show the time of the person viewing the page? The easiest way of

accomplishing this task would be to do this using JavaScript on the client-side.

For an example of this, we will place the end user's (the viewer of the web page) computer time on a button Web server control The following code shows how to accomplish this task:

<p>

<asp:Button id="Button1" onclick="Button1_Click"

runat="server" Font-Bold="True" Font-Names="Verdana" Font-Size="Larger"></asp:Button>

<html>

<head></head>

<body onload="javascript:document.forms[0]['Button1'].value=Date();"> <form name="_ctl0" method="post" action="NewFile.aspx"

id="_ctl0">

<input type="hidden" name=" VIEWSTATE"

value="dDwtNTMwNzcxMzI0Ozs+fGKi5Pun0h+xthnqTZtIR9yEzL4=" /> <p>

<input type="submit" name="Button1" value="" id="Button1" style="font-family:Verdana;font-size:Larger;font-

Clicking on the button will still give you a postback (observed through the Response.Write

command) and a new time on the button control as the page is re-rendered The result is shown in Figure 2.

Trang 21

Figure 2 Clicking on the date button

In this case, we placed some JavaScript directly in the <body> element of the page using the

onload attribute For the value of the onload attribute, we specifically pointed to the HTML element

with the name Button1 that is in the first <form> section (as it is possible to have multiple forms

in HTML).

This was an easy way to add some JavaScript to work with an ASP.NET Web server control Though,

we could have also just as easily added a JavaScript command to the button itself as shown here in the following partial code example:

with the key of the script as well as the script itself (both represented as string values).

III.2 Performing a Simple Button-rollover

When it comes to buttons on a Web page, one of the more common functionalities that Web

developers want to give their buttons is a rollover effect The rollover effect experience is when the end user hovers their mouse over a button on a Web page (without clicking the button) and the button itself changes color or shape This can be especially useful for Web pages that have multiple buttons, and it would be beneficial from a usability standpoint to notify the end user of the button they would be clicking prior to clicking it.

Trang 22

This was fairly easy to do before server controls came along and it isn't that difficult now with server controls The code for performing such an operation is as follows:

Instead of assigning the JavaScript to a server control through the <body> element, this time we

used the onmouseover and onmouseout events of the control For each of these events, we assigned a JavaScript value The onmouseover event is when the end user hovers their mouse over the control and the onmouseout is for actions when the end user removes their mouse from hovering

over the control In our case, we want to show one image while the mouse hovers over the button and then show the original image from when the page was loaded when the mouse moves away from the button.

If you are working directly in the control such as this, instead of specifying the control in the form as

we did when working with JavaScript in the <body> element, you can use the this keyword followed

by the property you are trying to change.

III.3 Setting Control Focus

In the construction of Web Forms, notice that no property is enabled to set the focus of a Web server control (this will be an added feature in ASP.NET 2.0 Whidbey) Therefore when using the NET Framework 1.0 or 1.1, you need to employ different methods to accomplish this task You can do it just as you did before ASP.NET came along—using JavaScript.

For example, if your ASP.NET page has multiple text boxes on it, focus can be set to the first TextBox control when the page is loaded by employing the following code in the <body> tag of the page.

<body onload="document.forms[0]['TextBox1'].focus();">

Using this construct, when the page is loaded, the element that contains the ID TextBox1 will employ the focus, and this enables the end user to start entering text directly without the need to use the mouse to position the focus.

III.4 Changing the Control Focus Dynamically

To change the focus on the ASP.NET page dynamically, turn the <body> tag into a HTML server control.

<body id="Body1" runat="server">

Trang 23

Next, you can change the focus by placing the following code constructs in your ASP.NET server-side events.

Visual C# NET

Body1.Attributes["onload"] = "document.forms[0]

['TextBox2'].focus();";

Using this technique, you can assign the focus to other elements in the form You might find this

useful when using the OnTextChanged event if there are multiple elements in the form If you don't

do this, the end user must refocus on the form again using their mouse after an OnTextChanged

event is fired due to the page postback.

III.5 Using Larger JavaScript Functions

Now that we can place pieces of JavaScript within HTML elements and even work with JavaScript and Web server controls in a dynamic fashion, how do you go about putting entire JavaScript functions in your code?

There are a couple of ways to accomplish this task and we will take a look at some of the more common methods that you can employ in your ASP.NET code For this article, we will look at the

RegisterStartupScript and the RegisterClientScriptBlock methods.

Note If you are a Visual Basic NET developer using Visual Studio NET 2002 or 2003, then

you will have to go into your options to turn on the ability to see these advanced methods To do

this, when in Visual Studio NET, in the menu bar, click on Tools > Options Then in the Text Editor folder, open the Basic folder Within the Basic folder, uncheck the Hide advanced

members check box This allows the methods we will be discussing in this article to be shown

with Microsoft Intellisense® See Figure 3.

Figure 3 Showing advanced members in Visual Studio NET

III.5.1 RegisterStartupScript Method

One of the first options available is to register script blocks using one of the NET classes for this

purpose The first is the RegisterStartupScript method This class would be best used when you

have a JavaScript function that you want to initiate when the page is loaded For an example of this, create an ASP.NET page in Visual Studio NET that contains two buttons Button1 and Button2

should be the IDs of the two buttons Then place the following code within the Page_Load event.

Trang 24

Button1.Attributes["onclick"] = "AlertHello()";

Button2.Attributes["onclick"] = "AlertHello()";

Using this code in the Page_Load event will produce the following HTML code in the browser (some

HTML code removed for clarity):

When working with the RegisterStartupScript method, the constructor asks for two parameters—the

first being the key of the script and the second being the script itself (represented as a string).

Page.RegisterStartupScript("MyScript", _

"<script language=javascript>" & _

"function AlertHello() { alert('Hello ASP.NET'); }</script>")

It is important that all the JavaScripts on the page have unique keys given to them If there is more than one JavaScript with the same key name, only the first one will be placed on the page.

III.5.2 RegisterClientScriptBlock Method

Now let's create a better version of the button rollover example by using the

RegisterClientScriptBlock method The problem with the rollover button example from earlier is

that when the end user's mouse hovered over the button image, the rollover image had to be

retrieved from the server in a separate request A better rollover button situation would be where the rollover image of the button is already downloaded and stored in the browser's cache so that when the end user hovers over the button, it is instantaneously displayed To accomplish this we must build a JavaScript function The following example shows the JavaScript function as well as the use of the

RegisterClientScriptBlock method to get the function onto the page For this example, the

code-behind only needs a Page_Load event and a button-click event for an ImageButton server control.

"MyButton = new Image;" +

"MyButtonShaded = new Image;" +

"MyButton.src = 'button1.jpg';" +

"MyButtonShaded.src = 'button2.jpg';" +

"}" +

"else {" +

Trang 26

</body>

</HTML>

With this output, notice that by using the RegisterClientScriptBlock, that the JavaScript function

appeared directly after the opening <form> element in the HTML code In addition to adding a

JavaScript function using the RegisterClientScriptBlock method, we also added some additional

JavaScript (just for fun) so that text will appear in the browser's status bar when the end user hovers over the mouse This is shown in the Figure 4.

Figure 4 Rollover button in action

The nice thing with all this JavaScript is that the normal postback to server-side events works just fine Clicking on the ImageButton in this example causes a postback where the Label server control's

text property is changed.

III.5.3 The Difference Between RegisterStartupScript and

RegisterClientScriptBlock

So we have shown two different methods for placing JavaScript functions on an ASP.NET page—so

what is the difference? The main difference is that the RegisterStartupScript method places the

JavaScript at the bottom of the ASP.NET page right before the closing </form> element The

RegisterClientScriptBlock method places the JavaScript directly after the opening <form>

element in the page So what difference does this make? It can make quite a bit of difference as we will see.

For an example of this, here is a way to put focus on a text box on a page when the page is loaded

into the browser—with Visual Basic NET using the RegisterStartupScript method:

Trang 27

Figure 5 Error executing JavaScript

The reason for this is that the browser will encounter the JavaScript before the text box is on the

page Therefore, the JavaScript will not be able to find a TextBox1.

III.6 Keeping JavaScript in a Separate File (.js)

Keeping JavaScript functions in a separate file (a .js file) is highly recommended Once they are in a separate file and part of a project, the file can be imported into a page using some of the methods already described.

For instance, a .js file can be included in an ASP.NET page using the following code:

Visual C# NET

Page.RegisterClientScriptBlock("MyScript",

"<script language=javascript src='MyJavaScriptFile.js'>");

Once the .js file is imported into the ASP.NET page, any of the JavaScript functions can be called as before This is a great way to manage JavaScript functions and keep them separate from the other logic of ASP.NET pages It is also an easy way to use the same JavaScript functions on multiple ASP.NET pages.

IV Data Access:

Trang 28

SqlCommand myCommand= new SqlCommand("INSERT INTO table (Column1, Column2)

SqlDataReader myReader = null;

SqlCommand myCommand = new SqlCommand("select * from table",

myConnection);

myReader = myCommand.ExecuteReader();

while(myReader.Read())

{

Console.WriteLine(myReader["Column1"].ToString());

Console.WriteLine(myReader["Column2"].ToString());

SqlCommand myCommand = new SqlCommand(

"SELECT * FROM table WHERE Column = " + input.Text, myConnection);

SqlParameter myParam = new SqlParameter("@Param1", SqlDbType.VarChar, 11);

myParam.Value = "Garden Hose";

SqlParameter myParam2 = new SqlParameter("@Param2", SqlDbType.Int, 4);

myParam2.Value = 42;

SqlParameter myParam3 = new SqlParameter("@Param3", SqlDbType.Text);

myParam.Value = "Note that I am not specifying size " +

"If I did that it would trunicate the text.";

Trang 29

When good connections go bad

The trusted connection had always been a mystery to me, I had never figured why IIS and SQL server never seemed to get along Fortunately Pete (moredip) pointed out a helpful section of the documentation To make it more simple I have decided to add it

to this article I am going to split this into 2 different sections IIS 6, and other

versions of IIS To get started your going to want to make sure osql.exe is in your system path, or find it It should be located wherever your SQL Server 2000

server/client tools directory On my system it is something like this: %Install Directory

%\80\Tools\BINN\.For simplicity I will use psuedo-variables in the examples so as not

to create confusion For example a psuedo-variable will look like this: %VARIABLE

% The server will be referred to as %SERVER%\%INSTANCE% If you aren't using any instance names it can be just %SERVER%, (local) if the server is the local

machine If you are instance names it would be something like ServerName\

ServerInstance etc etc I will also be using %DATABASE% to refer to the database name.

IIS 6 on Windows 2003 Server

I know this will work on IIS 6 with Windows 2003 Server because I have done it and that is currently the only OS with IIS 6 On IIS 6 the ASP.NET process runs under the account 'NT AUTHORITY\NETWORK SERVICE'.

osql -E -S %SERVER%\%INSTANCE% -Q "sp_grantlogin 'NT AUTHORITY\NETWORK

SERVICE'"

Now our ASP.NET application will be able to log into the server Now all thats left is

to grant access to the databases.

osql -E -S %SERVER%\%INSTANCE% -d %DATABASE% -Q

"sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'"

osql -E -S %SERVER%\%INSTANCE% -d %DATABASE% -Q

"sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'"

These 2 lines will add access to one of the databases So if you want to add access to another database just change %DATABASE% and run both lines.

Ngày đăng: 22/12/2013, 23:16

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w