用ASP建立多欄選項列表

來源:互聯網
上載者:User
建立 概念
作 者 : 青苹果工作室 本文點擊次數:4755


   原文出處:http://www.asptoday.com/articles/20000221.htm

  

   首先,我們需要著重介紹一些概念,以給你提供一些使這個“奇蹟”得以發生的組成部分。太輕易地泄露伏筆對於講故事來說不是個好的形式,所以那些不願意在一開始就看到就結局的人就應該在這裡先走開一下。

   這個綜合體的第一部分是定寬字型的使用。Internet Explorer 和Netscape的兩種標準定寬字型分別是 Courier New和Lucida Console。大部分的網頁設計都不是完全使用標準字型,但它們是這個特定技術 工作的必要條件,正象上面兩個畫面所顯示的,它們看起來不錯。

   進一步解釋,定寬字型就是一種字型,對這種字型的所有字元來說每個字元所佔據的空間都是相同的。所以你可能想要採取一定的步驟以確保,這些定寬字型中的某一個或另一個已經安裝在組成你的目標觀眾的客戶機上。如果要用你的瀏覽器看看目前這些字型是否已經安裝,在IE5中到Tools | Internet Options下,在Internet Options視窗的General 標籤上點擊 Fonts 按鈕。你就會看到一個名為 Plain Text Font的區:

  

   這就是當前安裝的全部定寬字型的列表。對於Netscape 4 和更高版本,到Edit | Preferences ,在 tree-view中展開 Appearance並選擇 Fonts。在那有一個Fixed Width Fonts的下拉式清單。

   第二部分是將某個特定的字型申請到選項列表中的能力。在IE4及以上版本中,可以用以下方式申請一個字型:

   < SELECT name="mySelect" style=FONT-FAMILY: Lucida Console, Courier New; >

   對Netscape,你可以圍繞選項列表使用Font標記:

   < FONT FACE="Lucida Console, Courier New" >< /FONT >

   第三部分就是無間斷空間&nbsp和管道字元的使用。

   在下一部分我將示範一個簡單的完全編碼的多選項列表的例子。最後一部分將示範在上下文使用資料庫調用的多選項列表函數,並將探索一些可能的參數選擇。

基本的多欄選項列表
作 者 : 青苹果工作室 本文點擊次數:4755


   以下的HTML例子示範多欄選項列表的最基本形式:

< HTML >
< HEAD >
< TITLE >Simple Multi-Column Select List< /TITLE >
< /HEAD >

< BODY >
< FORM >
< FONT FACE="Lucida Console, Courier New" >
< SELECT name="sel1" size=3 style="HEIGHT:65 px; WIDTH:350px;
FONT-FAMILY: Lucida Console, Courier New; FONT-SIZE: x-small;" >
< OPTION VALUE="1" >
John |Chips |
Intel |Hillsboro
< OPTION VALUE="2" >
Sue |Wotz |
Microsoft |Redmond
< OPTION VALUE="3" >
Nathan |Babb |
Eprise |Framingham
< /SELECT >
< /FONT >
< /FORM >
< /BODY >
< /HTML >

   列表選項包含FirstName、 LastName、 Company 和 City。為了正確地安排第一欄的格式,我們必鬚髮現位元組數最多的名字''Nathan'',然後為全部7個字元增加一個無間斷空間。然後我們給John和Sue增加適當數量的空格,使它成為7個字元,在結尾增加管道符號,現在我們就有了一個格式化了的欄。

   要注意我們在以上代碼中增加了< FONT > 標記。這是為了在Netscape上使用考慮,因為Netscape不象 IE能夠識別字型屬性。還要注意< FORM > 標記的出現。這也是Netscape 的要求。IE允許你繪製表單域、 選項列表等,不用將它們放在< FORM > 標記中,而在Netscape ,如果想要提取表單控制的話,就要求 表單的標記。

  

   使用這種方法有明顯的缺陷。比如說,不容易向列表中增加一個記錄,尤其是當它的大小與編碼確定的空間不適合的時候。另外,這種類型的列表難以維護,尤其是當你不是建立編碼的那個人的時候。 在下一部分我將向你示範如何用代碼動態建立一個多欄選項列表。

擴充的多欄選項列表(一)
作 者 : 青苹果工作室 本文點擊次數:4755


   我所執行的多欄選項列表是一個叫做aspOptionListMulti()的函數。如果你想跳過解釋直接進入代碼部分,可以在文章結尾處找到供下載的函數。下載的函數包含以下幾個檔案:

simpleSelect.htm
multicolumnlist.mdb
example.asp
connect.inc
aspFunction.asp
   simpleSelect.htm 是前面第一個例子的代碼。我的動態例子使用的資料庫是Access ,其資料來源是 multicolumnlist.mdb 。通過運行example.asp 指令碼就可以看到這個動態例子實際執行情況。這個檔案中包含connect.inc 以建立與資料庫的串連,aspFunction.asp 進行對aspOptionListMulti() 的函數調用。

   如下表中所列的,我的多欄列表函數有10個參數。我不想在aspOptionListMulti()的資料恢複方面多花時間。在接下來的討論中,假設存在某種類型的資料來源,你將在函數中處理返回的行。在這個例子中,我假設我所儲存的程式沒有參數。我也不再深入解釋這個函數是如何調用的。如果你想知道函數是如何被調用的,可以在下載處參考例子。

proc - 產生儲存的程式名
parmname - 用於sp調用的選擇性參數名 (可傳遞單個值或數組)
parmval - 用於sp調用的選擇性參數值 (可傳遞單個值或數組)
val - 選項列表的值欄
selval - 如果是Null 字元串就不選擇。如果它在選項列表中,就作為所選擇的值被傳遞。
column -在選項列表中代表欄的一個數組。
maxcollen - 一個欄的最大可能長度。 -1 就關閉。可以是單個值,對於多欄就是數組。
name - 選項列表的名字。
firstopt - 確定第一個選項是否為空白。如果是"|*" 那麼就無選項。如果傳遞了一個值,那麼它就是 第一個選項的值(推薦使用0或1)。
style - 字型必須是固定長度(Courier New 或 Lucida Console)。其它字型的參數選擇也可以傳遞。
optattr - 你可能想要包含在選項列表(如函數調用、屬性等)中的供選擇的屬性(完全引用)。
size -1是普通,2或更多是多選(行)。
以下代碼是函式宣告及它的其它參數。

   Function aspOptionListMulti(proc, parmname, parmval, val, selval, column, maxcollen, name, firstopt, style, optattr, size)

   On Error Resume Next

   對於我們這個特定情況,你可能想要在函數的最開頭包含一個On Error Resume Next 語句。把這個語句放在代碼中允許代碼在發生錯誤的情況下繼續執行(也許在返回的記錄集中,代碼在某一行中遇到了一個意外的值)。代碼中有這個語句,你還可以建立選項列表的內容。缺點是在發生錯誤的情況,你的應用程式使用者將不能直接向你報告錯誤,也許這個錯誤會導致下一個錯誤,使你的調試工作更加困難。

   代碼的下一個重要部分是瀏覽器類型的簡單測試。當我們最後建立選項列表時,我們需要區分開IE 和 Netscape ,因為兩者在指定字型和型號時對選項列表的處理是不同的。為了簡單起見,我將不深入到有關瀏覽器安全色性的代碼,因為我還想集中在代碼的關鍵概念上。如果你想知道更多有關相容性的 問題,你可以參考本文結尾處提供的代碼。


strUA = Request.ServerVariables("HTTP_USER_AGENT")
If Instr(strUA, "MSIE") Then
browserType = "IE"
End If

   接下來是對資料庫進行調用,以恢複我們建立多欄列表時所想要使用的記錄集。變數rsSelect 包含返回的設定結果。我是通過一個DCOM 物件spServerObj來實現對資料庫的調用的,在數組中傳遞 參數及其值。但是通過ASP用ADO進行調用也同樣簡單,在這個例子中用一個簡單的選擇語句來恢複記錄集。
   Set rsSelect = spServerObj.ca



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.