Errata

MCTS Self-Paced Training Kit (Exam 70-528): Microsoft® .NET Framework 2.0 Web-Based Client Development

Errata for MCTS Self-Paced Training Kit (Exam 70-528): Microsoft® .NET Framework 2.0 Web-Based Client Development

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page Test Question

Answer to Nested master file question is incorrect
On the Readiness Review assessment, the answer to the following question is incorrect:



Which of the following is a valid declaration for a nested master file?



The answer reads:



It should read:



Microsoft Press  Jul 13, 2010 
Printed
Page Test Question

528P_5.2.5_01 Marks correct answer as incorrect On the Readiness Review assessment, test question 528P_5.2.5_01 indicates that answer 2 is correct. The correct answer is 4. To make a skin optional, define a SkinID property. Named skins do not automatically apply to controls by type. Instead, you explicitly apply a named skin to a control by setting the control's SkinID property. Creating named skins allows you to set different skins for different instances of the same control in an application.

Microsoft Press  May 06, 2010 
Other Digital Version
CD-ROM

Incorrect answer marked correct in assessment question In the practice exam on the companion CD, one of the questions is scored incorrectly. The question reads: "You and a group of developers are creating an ASP.NET Web site. You want to give developers the option to apply a skin to Button controls, but you do NOT want the skin applied automatically. Which of the following skin files does this correctly?" The answer marked correct reads: <asp:Button runat="server" BackColor="lightblue" ForeColor="black" />The answer that should be marked correct reads: <asp:Button runat="server" SkinID="MySkin" BackColor="lightblue" ForeColor="black" />

Microsoft Press  May 06, 2010 
Printed
Page 77

"Write" should be "WriteLine"
On page 77, the code box under Sub-Step C of Step 4 contains a partialliy incorrect line of code.



Change:

System.Diagnostics.Debug.Write("HandlerName")To:

System.Diagnostics.Debug.WriteLine("HandlerName")

Microsoft Press  Jul 13, 2010 
Printed
Page 98

Label can also be rendered as a tag On page 98, the second to the last sentence of the second paragraph reads: "The Literal control does not provide substantial functionality and does not add any HTML elementrs to the Web page where the Label is rendered as a tag." It should read: "The Literal control does not provide substantial functionality and does not add any HTML elementrs to the Web page where the Label is rendered as a or a tag."

Microsoft Press  May 06, 2010 
Printed
Page 102

Incorrect title in Figure 3-3
On page 102, the title of the rightmost diagram in Figure 303 reads:



"Table"



It should read:



"TableCell"

Microsoft Press  Jul 13, 2010 
Printed
Page 112

HotSpot should be ImageMap On page 112, the 4th sentence in the "Understanding the HotSpotMode Property" paragraph contains an incorrect control. Change: "This means that you can specify the HotSpotMode on the ImageMap control to set a default HotSpot behavior, but the HotSpotMode of the HotSpot must be set to NotSet to inherit the behavior from the HotSpot." To: "This means that you can specify the HotSpotMode on the ImageMap control to set a default HotSpot behavior, but the HotSpotMode of the HotSpot must be set to NotSet to inherit the behavior from the ImageMap."

Microsoft Press  May 06, 2010 
Printed
Page 136

Control class needs to be replaced with CompositeControl class
On page 136, the first sentence of the second to the last paragraph reads:



"The Wizard control inherits from the Control class, and the BaseWizardStep inherits from View, as shows in Figure 3-20."



It should read:



"The Wizard control inherits from the CompositeControl class, and the BaseWizardStep inherits from View, as shows in Figure 3-20."

Microsoft Press  Jul 13, 2010 
Printed
Page 149

Label2 should be changed to Label1 On page 149, the second sentence of step 3 reads: "Add code to this method that places the PostBackValue into Label2." It should read: "Add code to this method that places the PostBackValue into Label1."

Microsoft Press  May 06, 2010 
Printed
Page 159

Incorrect class used
Page 159, the first sentence under Figure 3-25 reads:



"The DataBoundControl class has a method called DataBind."



It should read:



"The BaseDataBoundControl class has a method called DataBind."

Microsoft Press  Jul 13, 2010 
Printed
Page 160

Method used instead of event On page 160, the last sentence of the first paragraph reads: "The data-bound control automatically connects to the data source control at run time by calling the DataBind method on this control, which also raises the DataBound method." It should read: "The data-bound control automatically connects to the data source control at run time by calling the DataBind method on this control, which also raises the DataBound event."

Microsoft Press  May 06, 2010 
Printed
Page 162 and 163

Incorrect property used in code example
On pages 162, the second code example at the bottom of the page reads:



It should read:



On page 163, the second code example at the top of the page reads:



It should read:



Microsoft Press  Jul 13, 2010 
Printed
Page 173

UpperAlpha used in place of UpperRoman
On page 173, the first sentence of the last paragraph reads:



"If the BulletList control is set to render numbers, you can set the BulletStyle to LowerAlpha, UpperAlpha, LowerRoman, and UpperAlpha fields."



It should read:



"If the BulletList control is set to render numbers, you can set the BulletStyle to LowerAlpha, UpperAlpha, LowerRoman, and UpperRoman fields."

Microsoft Press  Jul 13, 2010 
Printed
Page 173

Incorrect description of Figure 3-33 On page 173, the paragraph immediately preceeding Figure 3-33 is incorrect and should be disregarded.

Microsoft Press  May 06, 2010 
Printed
Page 186

Incorrect class used in Summary On page 186, in the C# code example, the 5th line from the bottom of the page reads: /// Summary description for EmployeeListIt should read: /// Summary description for CarList

Microsoft Press  May 06, 2010 
Printed
Page 207

Definition of MenuItemBinding object incorrect
On page 207, the first sentence of the last paragraph contains an incorrect definition for MenuItemBinding.



Change:



"The Menu control contains a DataBindings property that is a collection of MenuItemBinding objects that define the binding between data items and TreeNodes."



To:



"The Menu control contains a DataBindings property that is a collection of MenuItemBinding objects that define the binding between a data item and the menu item it is binding to in a Menu control."

Microsoft Press  Jul 13, 2010 
Printed
Page 207

"nodes" should be "items" On page 207, the second sentence of the last paragraph needs to have "nodes" changed to "items". Change: "You can specify the criteria for binding and the data item properties to display in the nodes." To: "You can specify the criteria for binding and the data item properties to display in the items."

Microsoft Press  May 06, 2010 
Printed
Page 214-215

Update customer ID code needs to be removed
On pages 214 & 215, a line of code that is used to update the customer ID needs to be removed.



Delete the following line from the VB code (line 21):



customerFound.Id = updateCustomer.Id



Delete the following line from the C# code (line 34):



customerFound.Id = updateCustomer.Id;

Microsoft Press  Jul 13, 2010 
Printed
Page 216

"upper-left" should be "upper-right" On page 216, the first sentence in step 4 uses an incorrect side to display the Tasks window. Change: "4. Click the symbol in the upper-left corner of the ObjectDataSource1 control to display the ObjectDataSource Tasks window." To: "4. Click the symbol in the upper-right corner of the ObjectDataSource1 control to display the ObjectDataSource Tasks window."

Microsoft Press  May 06, 2010 
Printed
Page 217

"upper-left" should be "upper-right"
On page 217, Steps 10 and 16 contain incorrect references to where a symbol is in a control.



Change:

"10. Click the symbol in the upper-left corner of the GridView control to display the GridView Tasks window. Choose ObjectDataSource1 as the Data Source."



To:

"10. Click the symbol in the upper-right corner of the GridView control to display the GridView Tasks window. Choose ObjectDataSource1 as the Data Source."



Change:

"16. Click the symbol in the upper-left corner of the DetailsView control to display the DetailsView Tasks window. Choose ObjectDataSource2 as the Data Source."



To:

"16. Click the symbol in the upper-right corner of the DetailsView control to display the DetailsView Tasks window. Choose ObjectDataSource2 as the Data Source."

Microsoft Press  Jul 13, 2010 
Printed
Page 219

AdServer should be AdRotator On page 219, the control in Answer C to Question 1 is incorrect. Change: "C. Use the AdServer control and create an XML file with configuration of the control." To: "C. Use the AdRotator control and create an XML file with configuration of the control."

Microsoft Press  May 06, 2010 
Printed
Page 233-234

LoadOption values are obsolete and incorrect
On pages 233-234, the values in the two bullet points on page 233 and the bullet point on page 234 reads:



"OverwriteRow Overwrites the original DataRowVersion and the current DataRowVersion and changes the RowState to Unchanged. New rows also have the RowState of Unchanged.



PreserveCurrentValues (default) Overwrites the original DataRowVersion, but does not modify the current DataRowVersion. New rows have the RowState of Unchanged as well.



UpdateCurrentValues Overwrites the current DataRowVersion, but does not modify the the original DataRowVersion. New rows have the RowState of Added. Rows that had a RowState of Unchanged have the RowState of Unchanged if the current DataRowVersion is the same as the original DataRowVersion, but if they are different, the RowState is Modified."



They should read:



"OverwriteChanges Overwrites the original DataRowVersion and the current DataRowVersion and changes the RowState to Unchanged. New rows also have the RowState of Unchanged.



PreserveChanges (default) Overwrites the original DataRowVersion, but does not modify the current DataRowVersion. New rows have the RowState of Unchanged as well.



Upsert Overwrites the current DataRowVersion, but does not modify the the original DataRowVersion. New rows have the RowState of Added. Rows that had a RowState of Unchanged have the RowState of Unchanged if the current DataRowVersion is the same as the original DataRowVersion, but if they are different, the RowState is Modified."

Microsoft Press  Jul 13, 2010 
Printed
Page 255

Phrase "retrieves the populated DataSet," repeated incorrectly On page 255, the last sentence of the paragraph under the heading "Binding to the DataSet Object" reads: "The code sample retrieves the populated DataSet, retrieves the populated DataSet, and binds the DataSet to the GridView controls:" It should read: "The code sample retrieves the populated DataSet and binds the DataSet to the GridView controls:"

Microsoft Press  May 06, 2010 
Printed
Page 274

AddSchemaWithKey should be replaced with AddWithKey
On page 274, the 5th sentence of the first paragraph reads:



"The AddSchemaWithKey is selected, which means that if a new DataTable is added to the copy DataSet object, the new DataTable and its data are added to the original DataSet object."



It should read:



"The AddWithKey is selected, which means that if a new DataTable is added to the copy DataSet object, the new DataTable and its data are added to the original DataSet object."

Microsoft Press  Jul 13, 2010 
Printed
Page 274

AddWithPrimaryKey should be replaced with AddWithKey On page 274, the second bullet point reads: "AddWithPrimaryKey Adds the necessary DataTable, DataColumn, and PrimaryKey objects to complete the schema." It should read: "AddWithKey Adds the necessary DataTable, DataColumn, and PrimaryKey objects to complete the schema."

Microsoft Press  May 06, 2010 
Printed
Page 305

PreserveCurrentValues should be replaced with PreserveChanges
On page 305, the first sentence of the first paragraph reads:



"One option is to load the DataTable object again, using the default PreserveCurrentValues enumeration value, which loads the original DataRowVersion with the data from the database while leaving the current DataRowVersion untouched."



It should read:



"One option is to load the DataTable object again, using the default PreserveChanges enumeration value, which loads the original DataRowVersion with the data from the database while leaving the current DataRowVersion untouched."

Microsoft Press  Jul 13, 2010 
Printed
Page 306

The word "connections" should be replaced with "commands" On page 306, the last sentence of the second paragraph reads: "A MARS solution is to simply create two connections: one for the author list and one for the total of royalties query." It should read: "A MARS solution is to simply create two commands: one for the author list and one for the total of royalties query."

Microsoft Press  May 06, 2010 
Printed
Page 324

RaiseError should be RaisError
On page 324, the second sentence of the "Detecting Information with the Connection Event" section refers to RaiseError instead of RaisError.



Change:

"You can use the InfoMessage event to view the results of SQL Print statements and any messages that are available as a result of the SQL RaiseError statement, regardless of the error level."



To:

"You can use the InfoMessage event to view the results of SQL Print statements and any messages that are available as a result of the SQL RaisError statement, regardless of the error level."

Microsoft Press  Jul 13, 2010 
Printed
Page 351

DocumentNavigator should be XPathNavigator
On page 351, the first sentence of the "XPathNavigator" section refers to DocumentNavigator rather than XPathNavigator.



Change:

"The DocumentNavigator provides efficient navigation of an XmlDocument by providing XPath support for navigation."



To:

"The XPathNavigator provides efficient navigation of an XmlDocument by providing XPath support for navigation."

Microsoft Press  Jul 13, 2010 
Printed
Page 351

XmlTextWrite should be replaced with XmlTextReader On page 351, the first sentence of the XmlTextReader definition reads: "The XmlTextWrite provides non-cached, forward-only access to XML data." It should read: "The XmlTextReader provides non-cached, forward-only access to XML data."

Microsoft Press  May 06, 2010 
Printed
Page 362

SelectSingleNode should be GetElementByID On page 362, in the first sentence after the code sample, the second reference to SelectSingleNode should be GetElementByID. Change: "The SelectSingleNode method does not require a DTD to be provided and can perform an XPath lookup on any element or attribute where the SelectSingleNode requires an ID data type and a DTD." To: "The SelectSingleNode method does not require a DTD to be provided and can perform an XPath lookup on any element or attribute where the GetElementByID requires an ID data type and a DTD."

Microsoft Press  May 06, 2010 
Printed
Page 364

SelectElementsByTagName should be changed to GetElementsByTagName
On page 364, the last sentence on the page reads:



"Note that this method can perform an XPath lookup on any element or attribute, with much more querying flexibility; whereas, the SelectElementsByTagName is limited to a tag name."



It should read:



"Note that this method can perform an XPath lookup on any element or attribute, with much more querying flexibility; whereas, the GetElementsByTagName is limited to a tag name."

Microsoft Press  Jul 13, 2010 
Printed
Page 380

"Hi" should be "this test" On page 380, the first sentence of the 2nd paragraph contains an incorrect word. Change: "The DTD states that the myGrandChild element must be empty, but one of the myGrandChild elements of myChild ref-1 has a myGrandChild element containing the word Hi." To: "The DTD states that the myGrandChild element must be empty, but one of the myGrandChild elements of myChild ref-2 has a myGrandChild element containing the words this test."

Microsoft Press  May 06, 2010 
Printed
Page 384

"access" should be "support for"
On page 384, the third bullet under Chapter Summary is incorreclty worded.



Change:

"ADO.NET provides access XML files using the classes in the System.Xml namespace."



To:

"ADO.NET provides support for XML files using the classes in the System.Xml namespace."

Microsoft Press  Jul 13, 2010 
Printed
Page 451

class should be public class On page 451, the 9th line creates a class rather than a public class. Change: class StateControl : DropDownListTo: public class StateControl : DropDownList

Microsoft Press  May 06, 2010 
Printed
Page 452-453

C# should be VB and vice versa
On page 452, the first line of the VB code sample for step 4 is incorrect.



Change:

To:

On page 453, the first line of the C# code sample for step 4 is incorrect.



Change:

To:

Microsoft Press  Jul 13, 2010 
Printed
Page 473

does should be does not On page 473, the first sentence of the second paragraph is incorrect. Change: "Note that, when using the CustomValidator, the server-side validation does need to provide the same validation at the client-side validation." To: "Note that, when using the CustomValidator, the server-side validation does not need to provide the same validation at the client-side validation."

Microsoft Press  May 06, 2010 
Printed
Page 476

"to" should be "of"
On page 476, Step 5 contains an incorrect word.



Change:

"5. Set the TextMode property to txtPassword and txtConfirm to Password."



To:

"5. Set the TextMode property of txtPassword and txtConfirm to Password."

Microsoft Press  Jul 13, 2010 
Printed
Page 477

Figure 6-4 is incorrect and should be disregarded On page 477, Figure 6-4 is a copy of Figure 4-4 on page 241 and should be disregarded.

Microsoft Press  May 06, 2010 
Printed
Page 483

"if" should be replaced with "of"
On page 483, the last sentence of the last paragraph reads:



"The NavigateTest3.aspx page contains a Label control called lbl-Data that is populated with the data from txtData if NavigateTest3.aspx, which was called by using a cross-page PostBack, as shown in the following example:"



It should read:



"The NavigateTest3.aspx page contains a Label control called lbl-Data that is populated with the data from txtData of NavigateTest3.aspx, which was called by using a cross-page PostBack, as shown in the following example:"

Microsoft Press  Jul 13, 2010 
Printed
Page 483

NavigateTest3.aspx should be NavigateTest2.aspx On page 483, the last sentence references NavigateTest3.aspx in place of NavigateTest2.aspx. Change: "The NavigateTest3.aspx page contains a Label control called lblData that is populated with the data from txtData of NavigateTest3.aspx, which was called by using a cross-page PostBack, as shown in the following example:" To: "The NavigateTest3.aspx page contains a Label control called lblData that is populated with the data from txtData of NavigateTest2.aspx, which was called by using a cross-page PostBack, as shown in the following example:"

Microsoft Press  May 06, 2010 
Printed
Page 513

Semicolon missing from code sample
On page 513, the last line is missing a semicolon.



Change:

Label1.Text = "HiddenField clicks: " + HiddenField1.ValueTo:

Label1.Text = "HiddenField clicks: " + HiddenField1.Value;

Microsoft Press  Jul 13, 2010 
Printed
Page 529

Incorrect practice step On page 529, step 3 of exercise 2 contains incorrect information. Change: "In the Page_Load method for both Default.aspx and Default2.aspx, add code to increment the number of clicks in the Session object. Don’t forget to lock the application object before updating the value. Then display the value in Label2. The following code demonstrates how to do this: 'VB Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Session("clicks") = CInt(Session("clicks")) + 1 Label2.Text = "Session clicks: " + Session("clicks").ToString End Sub //C# Session["clicks"] = ((int)Session["clicks"]) + 1; Label2.Text = "Session clicks: " + Session["clicks"].ToString();Notice that HiddenField.Value is a String, which requires converting data to and from the String type. This makes it less convenient than other methods of storing data." To: "In the Page_Load method for both Default.aspx and Default2.aspx, add code to increment the number of clicks in the Session object. Then display the value in Label2. The following code demonstrates how to do this: 'VB Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Session("clicks") = CInt(Session("clicks")) + 1 Label2.Text = "Session clicks: " + Session("clicks").ToString End Sub //C# Session["clicks"] = ((int)Session["clicks"]) + 1; Label2.Text = "Session clicks: " + Session["clicks"].ToString();"

Microsoft Press  May 06, 2010 
Printed
Page 548

Invalid method referenced
On page 548, the fist method referenced in Step 2 uses the word "Being" and should use "Begin".



Change:

"2. Create events to start and end your asynchronous code that implements System.Web.IHttpAsyncHandler.BeingProcessRequest and System.Web.IHttpAsyncHandler.EndProcessRequest."



To:

"2. Create events to start and end your asynchronous code that implements System.Web.IHttpAsyncHandler.BeginProcessRequest and System.Web.IHttpAsyncHandler.EndProcessRequest."

Microsoft Press  Jul 13, 2010 
Printed
Page 551

The file extension .axd is incorrectly printed twice On page 551, the second sentence of the first paragraph contains two references to the axd file extenion, the second reference needs to be removed and two additional extensions needs to be added. Change: "For example, IIS passes requests for .aspx, .axd, and .axd to the Aspnet_Isapi.dll file that performs the ASP.NET processing." To: "For example, IIS passes requests for .aspx, .axd, .ascx, and .asmx to the Aspnet_Isapi.dll file that performs the ASP.NET processing."

Microsoft Press  May 06, 2010 
Printed
Page 565

Incorrect description of the Page.Request object
On page 565, the first sentence of the "Request" section is incorrect.



Change:

"The Page.Request property is an HttpRequest object that allows you to add data to the HTTP response being sent back to the client who requested a Web page."



To:

"The Page.Request property is an HttpRequest object that provides access to information that is part of the current page request as sent from the Web browser."

Microsoft Press  Jul 13, 2010 
Printed
Page 576

Case Scenario explanation is incorrect On page 576, the first sentence under the Case Scenario heading refers to searlization when the Chapter was about programming web applications. Change: "In the following case scenarios, you will apply what you’ve learned about how to implement and apply serialization, as well as how to upgrade applications that make use of serialization." To: "In the following case scenarios, you will apply what you’ve learned about how to program web applications."

Microsoft Press  May 06, 2010 
Printed
Page 593

"master=" used in place of "MasterPageFile="
On page 593, the first line in the VB and C# code reads:



'VB





//C#

They should read:



'VB





//C#

Microsoft Press  Jul 13, 2010 
Printed
Page 632

"ButtonWebPart" should be "ButtonControl" and "CalendarWebPart" should be "CalendarControl" On page 632, the fist sentence of Step 5 uses an incorrect name for two Web User controls. Change: "5. Now add two new Web User controls to your Web site named CalendarWebPart and ButtonWebPart." To: "5. Now add two new Web User controls to your Web site named CalendarControl and ButtonControl."

Microsoft Press  May 06, 2010 
Printed
Page 633

InitComplete should be GenerateModeList
On page 633, Step 4 contains an incorrect method in the VB and C# code samples.



Change:



'VB

Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)

AddHandler Page.InitComplete, AddressOf InitComplete

End Sub



//C#

void Page_Init(object sender, EventArgs e)

{

Page.InitComplete += new EventHandler(InitComplete);

}To:



'VB

Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)

AddHandler Page.InitComplete, AddressOf GenerateModeList

End Sub



//C#

void Page_Init(object sender, EventArgs e)

{

Page.InitComplete += new EventHandler(GenerateModeList);

}

Microsoft Press  Jul 13, 2010 
Printed
Page 660

Incorrect brackets used in C# code sample On page 660, the 7th line down in the C# code reads: Culture = Request.Form("DropDownList1");It should read: Culture = Request.Form["DropDownList1"];

Microsoft Press  May 06, 2010 
Printed
Page 687

AddUsersToRoles incorrectly listed twice
On page 687, the first bullet point under the Note box reads:



"AddUserToRole, AddUsersToRoles, AddUsersToRole, and AddUsersToRoles Adds a user to a role"



It should read:



"AddUserToRole, AddUsersToRoles, and AddUsersToRole Adds a user to a role"

Microsoft Press  Jul 13, 2010 
Printed
Page 694

"Login" should be "ChangePassword" On page 694, the last sentence in the first Step 3 contains an incorrect control. Change: "Invalid credential errors are displayed in the Login control itself, and not the ValidationSummary control, however." To: "Invalid credential errors are displayed in the ChangePassword control itself, and not the the ValidationSummary control, however."

Microsoft Press  May 06, 2010 
Printed
Page 783

Incorrect instructions given
On page 783, the second and third sentences of step 2 of exercise 2 are incorrect.



Change:

"Click OK. Then click Close."



To:

"Click Yes. Then close the resulting browser window."

Microsoft Press  Jul 13, 2010 
Printed
Page 808

five should be ten On page 808, the last sentence of the second paragraph refers to five minutes instead of ten minutes. Change: "This example shows you how to keep an object in cache for five minutes after the last request:" To: "This example shows you how to keep an object in cache for ten minutes after the last request:"

Microsoft Press  May 06, 2010 
Printed
Page 820

Review question incorrect
On page 820, Review question 4 is a repeat of question 4 on page 804, and should be disregarded.

Microsoft Press  Jul 13, 2010 
Printed
Page 833

Incorrect explanation of answer 2D On page 833, answer 2D is incorrect. Change: "Incorrect: The ImageButton is not appropriate for this function." To: "Incorrect: The FormView only shows one record at a time." Microsoft Press is committed to providing informative and accurate books. All comments and corrections listed above are ready for inclusion in future printings of this book. If you have a later printing of this book, it may already contain most or all of the above corrections.

Microsoft Press  May 06, 2010