DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> ASP.NET2.0中創建基於XML的應用程序
ASP.NET2.0中創建基於XML的應用程序
編輯:XML詳解     

  XML是目前在Web上應用很普遍的一項技術,而在.NET 2.0中,則提供了更為豐富的功能,使得在創建XML應用的時候更加得心應手。在本文中,將簡單以一個例子來說明,.Net 2.0在創建XML應用時的一些新特性。

  首先,我們平常在創建Web應用時,都會選擇以數據庫的形式來存貯數據的,但如果要以純XML來存貯數據的話,那的確會是種挑戰。在.NET 1.0/1.1框架中,對XML的支持功能有限,比如對同一應用中的多個XML文件的支持。在.Net 2.0中,這種情況得到了改變,增加了新的功能,比如:

  1、Datatable現在可以讀和寫XML數據了

  2、使用DatGridVIEw控件,可以讓你在dataset裡,展示來自不同表的數據。

  下面我將以一個Web應用的例子來說明這些新的特性。在這個程序中我將所有的數據都存儲在XML文件中。展示了如何同時在dataset裡,讀和寫多個XML文件,以及如何將XML文件綁定到datagridview控件;並且展示了datagridvIEw控件如何從XML文件中讀和寫數據,如何在多個XML文件中尋找數據。這些新功能,都是以往的.Net中做不到的。

  任務跟蹤應用

  接下來,我們將創建一個實現"任務跟蹤"的Web應用程序。這個應用程序其實很簡單,是可以幫助大家跟蹤一些任務和活動的進展情況。它需要創建兩個xml文件:activitIEs.xml和tasks.XML文件。Activites文件存放了日常的活動,包括每次活動需要完成些什麼任務,任務的描述,開始和結束的時間。Tasks文件存放的是任務的類型,比如浏覽email,編寫程序,閱讀書本等。下圖顯示了這兩個文件之間的數據結構。

ASP.NET2.0中創建基於XML應用程序
兩個文件之間的數據結構
  通常,可能你會想通過手工來創建這兩個xml文件,但實際上這是不提倡的,因為在vs.ne 2005中,可以通過dataset設計器來幫助你設計xml 文件的結構,允許你創建上圖關系的XML 文件,下面具體來講解下。

  1) 打開Visual.net 2005 beta 2,新建一個Windows應用程序,選擇vb.Net 語言,將這個工程命名為DTKXML,然後添加一個dataset類型的文件,將其命名為dsactivitiesTasks.。然後添加兩個表,activitIEs和tasks 表(見圖1)。只需要在設計器界面上,右鍵點選鼠標,在彈出的菜單上選Add->datatable就可以了。

  接著,對著每個表的表名,右鍵點鼠標,在彈出的菜單裡選擇Add->Column,為每個表增加列,其中,每個列的名稱,屬性和數據類型如下表所示:
  
  Activites表

Column Name Property 1 activityid DataType=System.Int32
Autoincrement=True
AutoincrementSeed=1
AutoincrementStep=1
Unique=True 2 taskid DataType=System.Int32 3 description DataType=System.String 4 startime DataType=System.DateTime 5 endtime DataType=System.DateTime
  Tasks表

Column Name Property 1 taskid DataType=System.Int32
Autoincrement=True
AutoincrementSeed=1
AutoincrementStep=1
Unique=True
AllowDBNull=False 2 task DataType=System.String
AllowDBNull=False 
  接下來,要為這兩個XML文件建立關聯,這是十分簡單的。在activitIEs和task表的設計視圖狀態下,鼠標右鍵點選,在彈出的菜單中選擇"Add Relation",按照下圖所示,設置兩個文件的關聯性。

ASP.NET2.0中創建基於XML應用程序
設置兩個文件的關聯性
  2) 這個時候,我們可以設計應用的界面了。應用包括兩個窗體,第一個窗體,允許用戶處理關於活動的有關信息,第二個窗體,可以提供給用戶對各類型的任務進行編輯。

  將工程中默認的窗體改名為frMactivities,在工具箱中拖一個datagridview控件到窗體中。接著,注意選擇控件右上角的smart tag標記,這時會出現一個菜單(如下圖所示),選擇dsActivitiesTasks(就是我們剛才創建的dataset類型文件)作為datagridvIEw的數據源。

ASP.NET2.0中創建基於XML應用程序(2)
dsActivitIEsTasks
  這時,在窗體下部的組件托盤中,你會發現visual studio添加了dsActivitiesTasks的實例,和另外一個組件叫dsActvitiesTasksBindingSource。實際上,你不需要Binding Source,只需要直接將dataset綁定到Datagridview控件,因此,選擇這個bingding source控件並刪除它。之後,再次使用smarttag的功能,再次選擇dsActivitIEsTasks做為數據源。

  接下來,我們要對datagridvIEw控件進行屬性的設置,以將一些不需要顯示的列隱藏,設置時,再次選smarttag標志,在彈出的菜單中選擇"Edit Columns", 按如下表對其屬性進行設置,

Column Property activityid Visible=False Taskid ColumnType= DataGridVIEwComboBoxColumn
DataSource= DsActivitIEsTasks
DataMember= tasks.task
ValueMember=tasks.taskid description Width=180
  再往該窗體中添加3個按鈕,名稱分別是btnEditAddTasks, btnSave, btnDelete,則第一個窗體的界面設置完畢。

  編寫相關代碼

  編寫代碼時,分兩個步驟:1、加載相關的數據,2、使用戶能對數據進行增,刪,保存。下面分步說明:

  加載相關數據到datagridvIEw控件中。

  由於我們已經有了dataset類型的文件,因此我們可以由此創造出上述的兩個文件,則應用程序第二次運行時,會先檢查是否存在這兩個XML文件。代碼如下:

  在form_load事件中寫入

If CheckFileExistence() Then
LoadDataSet()
Else
’如果兩個xml文件不存在,則創建這兩個XML文件
CreateXMLFile()
End If
  接著,定義一系列的變量,以存放兩個XML文件的具體位置,如下代碼:

Dim myDocumentsFolder As String = My.Computer.FileSystem.SpecialDirectorIEs.MyDocuments

Dim activitiesFileName As String = "\ActivitIEs.XML"
Dim tasksFileName As String = "\Tasks.XML"
Public activitiesFile As String = String.Concat(myDocumentsFolder, activitIEsFileName)
Public tasksFile As String = String.Concat(myDocumentsFolder, tasksFileName)
  注意其中一個用法My.Computer.FileSystem.SpecialDirectories.MyDocuments返回當前計算機上"我的文檔"的具體位置。這裡,將兩個文件保存到"我的文檔"中去。並且用activitIEsFile和tasksFile變量,保存兩個XML文件實際存取的路徑。接下來是相關幾個過程的代碼,如下所示

Public Function CheckFileExistence() As Boolean
’檢查兩個XML文件是否存在
 If My.Computer.FileSystem.FileExists(activitIEsFile) And _
My.Computer.FileSystem.FileExists(tasksFile) Then
  Return True
 Else
  Return False
 End If
End Function


Public Sub CreateXMLFile()
 DsActivitIEsTasks.Tasks.AddTasksRow("Email")
 DsActivitIEsTasks.Tasks.AddTasksRow("Browsing")
 DsActivitIEsTasks.Tasks.WriteXml(tasksFile, System.Data.XMLWriteMode.WriteSchema)
 DsActivitiesTasks.activities.WriteXml(activitIEsFile, System.Data.XMLWriteMode.WriteSchema)
End Sub
  上面的createxmlfile過程,首先前兩句代碼往task的XML文件中增加一些樣本數據,分別為email和browsing.接著的兩句代碼,是.Net 2.0中新增加的功能,設置了一個重要的參數writeSchema,以便自動將數據保存到tasksfile和activitIEsfile兩個文件中,並且自動將XML 的schema模式保存起來,只有這樣才能將兩個文件之間的在數據表上對應的關系保存起來。

Public Sub LoadDataSet()
DsActivitIEsTasks.tasks.ReadXML(tasksFile)
DsActivitiesTasks.activitIEs.ReadXML(activitIEsFile)
End Sub
  上面是loaddataset過程,十分簡單,分別讀取兩個xml文件。可以看到,在.net 2.0中,可以同時在一個dataset裡加載多個XML文件,如上述所示。而在.Net 1.1中,這是很難做到的。

  保存和刪除數據

  在datagridvIEw中,提供了給用戶自動新增記錄的功能,用戶只需要將光標移動到新一行中就可以了。而當用戶編輯了數據後,需要對其進行保存,這個時候需要編寫一點代碼。保存功能只需要調用writeXML方法就可以了,同樣,刪除數據時,需要調用removeat方法就可以了。如下所示:

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnSave.Click
 Me.DsActivitiesTasks.activitIEs.AcceptChanges()
 Me.DsActivitiesTasks.activities.WriteXml(activitIEsFile, System.Data.XMLWriteMode.WriteSchema)
End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles btnDelete.Click
 Me.DataGridView1.Rows.RemoveAt(Me.DataGridVIEw1.CurrentRow.Index)
 btnSave_Click(sender, e)
End Sub
  增加和編輯任務

  我們要為btnEditAddTasks這個按鈕編寫相關代碼,而我們新建一個窗體frmEditAddTasks,在這個窗體中,可以添加刪除不同的任務。首先,拖拉一個datagridvIEw控件,增加兩個按鈕分別命名為btnSave和btnDelete,如下圖所示:

ASP.NET2.0中創建基於XML應用程序(3)
  在load事件中,寫入如下代碼

DataGridView1.DataSource = frMactivities.DsActivitIEsTasks
DataGridView1.DataMember = frMactivities.DsActivitIEsTasks.tasks.TableName
  以將datagridview綁定到dataset的tasks 文件中去。注意這時以frmActivities.DsActivitiesTasks的形式調用的,因為該dataset是在第一個窗體中frMactivitIEs中設立的。

  接著,為保存save按鈕編寫代碼:

frMactivities.DsActivitIEsTasks.tasks.AcceptChanges()
frMactivities.DsActivitIEsTasks.tasks.WriteXML(frMactivitIEs.tasksFile, _
System.Data.XMLWriteMode.WriteSchema)
  而刪除按鈕delete的代碼也一樣簡單:

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
Me.DataGridView1.Rows.RemoveAt(Me.DataGridVIEw1.CurrentRow.Index)
btnSave_Click(sender, e)
End Sub
  最後,我們要記得,在frMactivitIEs窗體的btnEditAddTasks按鈕中,編寫如下代碼,以能夠使用戶點這個按鈕時,可以彈出編輯任務task的窗口

Dim frmtasks As New frmEditAddTasks
frmtasks.ShowDialog()
  運行代碼

  現在可以開始運行代碼了。結果如下圖所示:

ASP.NET2.0中創建基於XML應用程序(3)
  這時,你可以點"Edit/add Tasks"按鈕來添加不同的任務。也可以在這個窗體中,通過下拉框來選擇每個活動中不同的任務,指定每個任務的描述,開始和結束時間,並對它們進行保存和刪除,而這一切,全部是通過使用.Net 2.0中XML的新特性來實現的。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved