日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Programming MS Office 2000 Web Components第二章第一节(第二部分)

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Programming MS Office 2000 Web Components第二章第一节(第二部分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

排序和過濾

?????? 閱讀本節時,如果您打開隨書光盤Samples\Chap02目錄下的SortFilterExample.htm文件。您會發現這個例子很有用。本節展示的代碼和描述的特定環境來自這個文件。

?????? 電子表格組件支持Excel中的基礎的排序和過濾功能,并且通過編程模型和用戶界面來提供這些功能。然而,在電子表格的用戶界面中,排序和過濾的功能比起Excel有某種程度的增強。讓我們來看一個例子。

?

DHTML探險

?????? 屬性工具箱是由兩位OWC小組的天才程序員,Eric Matteson和Cesar Alvarez開發的不可思議的杰作,屬性工具箱也證明了試圖使用DHTML來模仿Office的用戶界面風格是一件困難重重的事。早期,我們堅持認為我們應該使屬性工具箱盡可能地和標準的Office用戶界面相似,Eric和Cesar也的確花費了數月的時間來改變HTML和IE瀏覽器,使得它能符合需求。大多數人都不相信結果竟然就在HTML中。然而,因為考慮到雖然一般人都可以很有效的使用web站點,但還是會被Office應用程序中的許多高級對話框所迷惑,所以關于使用HTML來模擬Office用戶界面是否使得控件更易于使用的爭論依然很突出。

?

?????? 對于那些希望在web頁面中使用Office Web Components的開發者們,我的建議是不要浪費時間企圖將HTML融入到傳統的微軟窗體應用程序的界面中,而應該利用HTML的簡潔和動態布局的優勢來為您的應用程序開發一個更加自然和易于使用的界面。

?

?????? 假設您已經開發了一個用于列出您當前的產品線的電子表格, 表格中顯示了每一個產品的單價,庫存數量,和定購數量,還有一個給出了銷售率的計算列,用于顯示潛在的價值。現在用戶需要根據產品的潛在價值對產品列表進行降序排列。用戶可以在電子表格用戶界面中,簡單的選擇需要排序的區域(或者在區域中選擇任意的一些單元),并點擊降序工具條按鈕。當按鈕被點擊時,一個Excel中沒有的菜單在按鈕下方顯示出來,如圖2-2所示。

?

?

圖2-2?使用中的電子表格組件用戶界面

?

用戶們在對Excel區域排序時所遇到的常見問題之一就是選擇要排序的區域和選擇根據哪一列進行排序。電子表格組件讓用戶能夠方便的選擇需要排序的區域,然后在用戶點擊工具條上的升序或降序排序按鈕時,顯示一個列名的列表,使用戶能夠選擇根據哪一列進行排序。通過Range對象的Sort方法,也可以使用排序功能。它使開發人員可以在用戶單擊或者雙擊一個列標頭時方便地完成一個列表的排序。

?

您可以已經注意到電子表格組件一次只能根據一列來對列表進行排序。Excel提供了一個排序對話框,可以讓您同時根據最多三個關鍵列進行排序(例如,是否根據種類排序,然后根據發貨人排序,最后根據潛在價值排序)。電子表格組件沒有完成這個功能的用戶界面,但是底層的引擎是支持這個功能的。您可以使用下列函數模仿多列的排序。

?

?????? 實現多列排序的技巧在于,實際上是按照被排序列所定義次序的相反次序執行排序動作。例如,如果您需要先根據類別進行排序,然后再根據發貨商進行排序,函數則會首先根據發貨商排序列表,然后再根據類別進行排序。當電子表格根據一個新列排序列表時,新列的每一項(新列中相同列值的一組行)中,之前根據另一列進行排序產生的次序將保持不變。我們剛才閱讀的函數接收三個參數:一個需要排序的區域,一個列編號的數組,一個方向值的數組(降序或升序)。函數降序遍歷這兩個數組,從而實現了多列排序的效果。請注意,函數還使用了BeginUndo和EndUndo方法來將所有的排序操作組合在一個撤消動作塊中,這樣當用戶選擇撤消命令時,這些排序動作就會被一起撤消。

?

?????? 電子表格組件也支持一種新的自動過濾的用戶界面。組件中的過濾函數和Excel中的過濾函數相似,但是組件用戶界面中的自動過濾下拉列表有一些不同的地方。假設您需要從圖2-2中我們剛才查看過的產品列表中,過濾掉一些產品類別來觀察它會怎樣影響高潛在價值的產品。開發者或用戶可以打開自動過濾功能,在類別列上點擊自動過濾箭頭,就會看到圖2-3所示的界面。

?

?

圖2-3.???????? 電子表格組件的自動過濾用戶界面

?

?????? 在Excel中,可以非常方便的選擇單個項,然而,選擇多項則需要使用高級自動篩選對話框,當您只是想要排除四五項時,這個操作就會十分費勁。而在電子表格組件中,自動過濾下拉列表為每一項都提供了一個簡化復選框,在頂部還有一個”顯示所有”項,使您能夠快速切換所有項的狀態(選擇或不選擇)。

?

?????? 機敏的讀者會發現電子表格組件中的自動過濾下拉列表沒有包括Excel中很有用的兩個設置選項。例如,您找不到”前10位”的選項,這個選項使您能夠快速過濾,得到前10位(或者前n位)的項。您也找不到”自定義”的選項,這個選項允許您完成比簡單的包含或不包含的過濾復雜得多的過濾功能。很遺憾,這些更高級的功能還沒有包含在電子表格組件中。不過,您可以通過調用電子表格控件的編程模型來容易得模擬這些功能。

?

??? 可以使用下列函數來模擬”前n位”的過濾功能:

?

?????? “前N位”過濾功能似乎很簡單,只要先排序,然后查看最開始的N行即可。但是真正的”前N位”過濾功能可能會返回超過N行的結果,因為它實際上的意思是”包括前N位的值的那些行”。如果在排序后,第10,11位的值相同,那么”前10位”過濾會將這些產品一起返回,因為它們都在前10位的值當中。還有,上述代碼通過簡單的改變排序方向(升序和降序)實現了過濾出前N位和后N位的功能。

?

??? 同樣地,您可以通過使用下面所示的函數來模擬基于表達式的過濾功能:

?

?????? 上述函數使用文檔對象模型(DOM)中名為execScript的方法執行表達式(DOM是為Internet Explorer中的腳本提供的編程模型)。這個方法將字符串形式的腳本代碼傳遞給動態引擎腳本(在這個例子中,是VBScript)來計算。之后腳本代碼將表達式的結果存儲在一個全局變量中,以便結果能夠被用來判斷表達式的真假。如果表達式為真,該行將會被包含在過濾后的集合中;如果為假,該行將被排除。

?

?????? 另外,您也可以使用電子表格組件的工作表對象中的Eval方法來計算表達式。Eval使用電子表格組件的函數庫和表達式計算器,它可以代替動態腳本引擎,這就意味這在IE之外的容器中它會非常有用,另外當您希望可以讓用戶在表達式中使用電子表格的函數或區域的引用時它也會很有用。然而,動態腳本引擎可以提供一個強大的表達式計算器。還有,它允許您使用其它的腳本語言,例如ECMA腳本(也被稱為JavaScript)。

轉載于:https://www.cnblogs.com/yiriqing/archive/2006/06/19/429627.html

總結

以上是生活随笔為你收集整理的Programming MS Office 2000 Web Components第二章第一节(第二部分)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。