ASP.NET2.0中建立基於XML的應用程式

來源:互聯網
上載者:User

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,編寫程式,閱讀書本等。顯示了這兩個檔案之間的資料結構。
   

 

  通常,可能你會想通過手工來建立這兩個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",按照所示,設定兩個檔案的關聯性。

  2) 這個時候,我們可以設計應用的介面了。應用程式套件括兩個表單,第一個表單,允許使用者處理關於活動的有關資訊,第二個表單,可以提供給使用者對各類型的任務進行編輯。

  將工程中預設的表單改名為frmActivities,在工具箱中拖一個datagridview控制項到表單中。接著,注意選擇控制項右上方的smart tag標記,這時會出現一個菜單(如所示),選擇dsActivitiesTasks(就是我們剛才建立的dataset類型檔案)作為datagridview的資料來源。

  這時,在表單下部的組件托盤中,你會發現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,如所示:

  在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()

  運行代碼

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

  這時,你可以點"Edit/add Tasks"按鈕來添加不同的任務。也可以在這個表單中,通過下拉框來選擇每個活動中不同的任務,指定每個任務的描述,開始和結束時間,並對它們進行儲存和刪除,而這一切,全部是通過使用.NET 2.0中XML的新特性來實現的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.