C# ПІДРУЧНИКИ / c# / Premier Press - C# Professional Projects
.pdf
IMPLEMENTING THE BUSINESS LOGIC |
Chapter 33 |
769 |
|
|
|
|
|
RequiredFieldValidator2
ID: RequiredFieldValidator2
ControlToValidate: TextBox2
ErrorMessage: Please provide a valid password
Command1
ID: cmdSubmit
Text: Submit
After you have added the controls and changed the previously mentioned properties, the form appears as shown in Figure 33-3.
FIGURE 33-3 The frmLogon form with the controls added
Creating the frmSelectOption Form
The second form required for the MobileCallStatus application is the frmSelectOption form. To create the frmSelectOption form, add a Label, a SelectionList, and a Command control to the form. After adding these controls, change the following properties of the control.
770 Project 6 CREATING A MOBILE APPLICATION
Label1
ID: Label2
Text: Please select an option:
Font:
Bold: True
SelectionList1
ID: lstOptions
Items: The items to be added in the SelectionList1 control are displayed
in Table 33-1.
Table 33-1 Items to be Added to the SelectionList Control
ItemText |
Value |
Selected |
View Pending Calls |
viewPending |
Checked |
Show Unattended Calls |
showUnattended |
Unchecked |
|
|
|
In the General tab of the lstOptions Properties dialog box, change the following properties:
Select Type: Radio
Rows: 2
Command1
ID: cmdLoad
Text: Query
Figure 33-4 shows the frmSelectOption form with the controls added.
IMPLEMENTING THE BUSINESS LOGIC |
Chapter 33 |
771 |
|
|
|
|
|
FIGURE 33-4 The frmSelectOption form with the controls added
Creating the frmPending Form
The frmPending form contains a Label, a SelectionList, and two Command controls. Drag these controls to the form and change the following properties of the controls:
Label1
ID: Label3
Text: Pending Calls
Font:
Bold: True
SelectionList1
ID: lstPending
Select Type: CheckBox
Rows: 4
772 Project 6 CREATING A MOBILE APPLICATION
Command1
ID: cmdUpdate
Text: Mark checked as complete
Command2
ID: cmdBack1
Text: Back
When you add controls to the frmPending form, the form appears as shown in Figure 33-5.
FIGURE 33-5 The frmPending form with the controls added
Creating the frmUnattended Form
To create the frmUnattended form, drag a Label, a SelectionList, and two Command controls to the form.Then, change the following properties of the controls:
Label1
ID: Label4
Text: Unattended Calls
774 Project 6 CREATING A MOBILE APPLICATION
Until now, you have created the interface of the forms required for the MobileCallStatus application. However, the controls that are added to the forms are not functional. To make the controls functional, you need to add code to these controls.
Adding the Business Logic
to the MobileCallStatus Application
You should first understand the working of the MobileCallStatus application. This will help you to write the code for the mobile Web controls in the mobile forms.
1.When a user accesses the MobileCallStatus application, the user needs to enter a logon name and password in the frmLogon form.
2.The user then clicks on the Submit button.
3.The application then validates the logon name and password of the user based on the data in the Users.xml file.
4.If the data entered by the user is incorrect, a message is displayed to the user.
5.The user then needs to reenter the logon name and password.
6.The logon name and password are again validated, and the process is repeated until the user enters correct data.
7.When the data entered by the user is validated and found to be correct, the frmSelectOption form is displayed. In the frmSelectOption form, the user can choose to view the incomplete calls or the new calls added to the Calls.xml file.
8.To view the pending calls, the user selects the View Pending Calls option and clicks on the Query button. The frmPending form is displayed.
9.However, to view the new calls added to the XML file, the user needs to select the Show Unattended Calls radio button. The user then clicks on the Query button.The frmUnattended form is displayed.
IMPLEMENTING THE BUSINESS LOGIC |
Chapter 33 |
775 |
|
|
|
|
|
10.In the frmPending form, the user can view the pending calls and click on the Back button to return to the frmSelectOption form. In addition, the user may check the pending calls check boxes and click on the Mark checked as complete button when a call is completed. The status of the call will be changed to Complete in the Calls.xml file.
11.In the frmUnattended form, the user can view the new calls added to the list in the Calls.xml file and click on the Back button to return to the frmSelectOption form. However, if the user wishes to accept any new call, the user needs to check the pending calls check boxes and click on the Accept checked call(s) button. In this case, the status of the accepted calls is changed to Pending in the Calls.xml file.
To implement the previously listed functionality, you need to add code to the Command controls that are included in the MobileCallStatus application. You can start with the Submit button in the frmLogon form.
Adding Code to the Submit Button in the frmLogon Form
While writing the code for the Submit button, you first need to set the Visible property of the lblMessage Label control to false. This will make the lblMessage control invisible until an error message is generated. To display the error message, you would then need to change the Visible property of the control to true. However, to make the control invisible, add the following statement to the Click event of the cmdSubmit button.
lblMessage.Visible=false;
Next, you need to validate the logon name and password entered by the user. The data entered by the user is validated against the Users.xml document. To do this, add the following code to the Click event of the cmdSubmit button.
if (Page.IsValid)
{
bool found; found=false;
XmlTextReader reader= new XmlTextReader(“C:\\ Electronix\\Users.xml”); reader.MoveToContent();
while (reader.Read())
776 Project 6 CREATING A MOBILE APPLICATION
{
if (reader.HasAttributes)
{
reader.MoveToNextAttribute();
if (reader.Value==TextBox1.Text)
{
reader.MoveToNextAttribute();
if (reader.Value==TextBox2.Text)
{
found=true; reader.MoveToFirstAttribute(); ActiveForm=frmSelectOption;
}
else
{
lblMessage.Text=”Invalid Password”; lblMessage.Visible=true;
}
}
}
}
reader.Close();
if (found==false & lblMessage.Visible==false)
{
lblMessage.Text=”Invalid User Name”; lblMessage.Visible=true;
}
}
The preceding code uses an if loop to validate the data entered by the user. To do this, the IsValid property of the Page is used. The IsValid property returns a Boolean type value, true or false. If all the validations applied in the page are successful, the IsValid property returns true. Alternatively, if any of the validation
IMPLEMENTING THE BUSINESS LOGIC |
Chapter 33 |
777 |
|
|
|
|
|
fails, the IsValid property returns false. The value returned by the IsValid property is stored in the Boolean type variable found. The variable found is initialized
to false.
Next, an object reader of the XmlTextReader class is created and initialized to read the Users.xml file. The path of the Users.xml file is specified in the initialization statement. You have learned about the XmlTextReader class in Chapter 17, “Interacting with a Microsoft Word Document and Event Viewer,” in the section “The
XmlReader Class.”
The code then uses the MoveToContent() method of the XmlReader class to check whether the current node in the XML document is a content node. If the current node is not a content node, the reader moves to the next content node. You need to check for the content node to read the values from the content node of the
Users.xml file.
Then the Read() method of the XmlTextReader class is used in a while loop to read the content of the Users.xml file. Inside the while loop, the HasAttributes property of the XmlReader class is used to check whether the current node has any attributes associated with it. The HasAttributes property returns a Boolean type value. If the current node has an associated attribute, the HasAttributes property returns a value, true.
Then an if loop is used to match the value entered by the user in TextBox1 to the value in the reader object. To do this, the Value property of the XmlTextReader class is used. If the value in TextBox1 is the same as the value in the reader object, the value of TextBox2 is matched to the value of the next attribute. The MoveToNextAttribute() method is used to move to the next attribute in the Users.xml document. If the values of TextBox1 and TextBox2 are matched to the values in the attributes of the XML document, the found variable is set to true. A value of the variable found, if set to true, indicates that the validations performed in the frmLogon form are successful. In addition, the reader object is set to the first attribute in the Users.xml file and the frmSelectOption form is displayed to the user. Figure 33-7 shows the Users.xml file.
