從屬列表問題(dependent list problem)"的問題時常被提出。問題時常出現(xiàn)于當你有兩個以上的選擇列表時,一個主列表有若干個選項,你希望當用戶選擇主列表中的某個選項時,在其他的從屬列表中顯示相關(guān)的選項。你可以通過eXtensible Markup Language(XML)的數(shù)據(jù)島(data islands)來實現(xiàn)這一功能,把XML內(nèi)嵌到你的HTML中。這一結(jié)果對在客戶端的XML應用具有實踐意義。
假設(shè)你為一家名為"CheapPc"的公司工作,你負責讓訪問公司網(wǎng)站的用戶找到用戶所在州的"CheapPc"商店。在公司網(wǎng)站上你列出了州名的列表。當一個顧客在主列表中點擊選擇一個州時,你希望在從屬列表中顯示相關(guān)的商店列表。
問題在于:你怎樣填充從屬列表而不用刷新該頁面或不用每次用戶在主列表中選擇時都向服務器發(fā)送消息?XML數(shù)據(jù)島完美地解決這一問題。當用戶發(fā)出請求,所有商店的數(shù)據(jù)都連接成一個XML字符串(Listing 1)。返回的結(jié)果是一個鑲嵌在HTML頁面中的數(shù)據(jù)島。該數(shù)據(jù)島使用以下XML結(jié)構(gòu):
根元素包含州名的列表,每個州名的列表依次包含商店的列表。每個商店都有一個相應的ID和城市名。為了生成這一XML字符串,你得用ActiveX Data Object(ADO)查詢數(shù)據(jù)庫,并用XML標記符格式化查詢結(jié)果。把記錄集數(shù)據(jù)格式化成HTML表格和把記錄集數(shù)據(jù)格式化成XM文件之間有一些不同。在本文的后半部分,我將向你展示如何避免過多的串聯(lián)工作以提高響應時間。你可以點擊這里下載例程。
|