我們先來簡單瞭解一下WinForm和FarPoint,WinForm是·Net開發平臺中對Windows Form的一種稱謂。而FarPoint是一款模擬EXCEL的控制項。它可以根據用戶的要求實現很大部份的EXCEL操作,且包括多個子表、表格風格定義、公式計算、排序、分組等等都可以實現。本文主要是介 ...
我們先來簡單瞭解一下WinForm和FarPoint,WinForm是·Net開發平臺中對Windows Form的一種稱謂。而FarPoint是一款模擬EXCEL的控制項。它可以根據用戶的要求實現很大部份的EXCEL操作,且包括多個子表、表格風格定義、公式計算、排序、分組等等都可以實現。本文主要是介紹利用FarPoint Spread表格控制項來構造Winform的Excel表格界面輸入。
在Winform界面中以類似Excel表格界面中錄入相關的數據,其中界面需要錄入圖片信息,基礎信息,列表信息等,綜合這些後界面的效果就如下麵這樣。而本文主要針對如何利用FarPoint Spread表格控制項實現類似Excel界面豐富數據的保存及顯示,以及希望在使用過程中的一些經驗對大家在開發Winform的Excel數據錄入和顯示方面的開發有一定幫助。
根據上面的界面分類能夠看到,這個界面大概能怪劃分的數據類型分別是基礎欄位數據、多行的列表數據、圖片數據和備註信息的顯示錄入。那麼下麵我們根據分類介紹如何實現這些功能。
1、類似Excel的列表總體界面設計
首先,在這個列表中需要在Winform的界面中進行設計拖入一個Farpoint控制項到Winform界面上後,然後設置好佈局等屬性,接著在右鍵菜單上啟動Spread Designer,這樣就可以設計相關的Excel樣式表格的內容了。
註意:一般情況下,這個界面是在窗體中設計的,當然你的內容可以通過拷貝的方式複製過來,從Excel文檔中複製粘貼過來,如果從效果上來看是一樣的。不過,雖然Farpoint Spread控制項提供了一個另存為Xml文件的操作,並且可以通過API,Open一個XML文件,不過Open的XML文件後,好像內容不能進行修改的,而且類型CellType也是Null(空值)的,所以如果要在一個窗體上動態載入佈局是沒辦法實現的。不過對於開發來說,我們在設計時就把Excel樣式的列表界面設計好,這也是一個不錯的選擇。
2、下拉列表的綁定
大多數情況下我們為了輸入的便利性,我們會選擇在Excel列表中通過下拉列表方式輸入內容,如此便可以提高速度和用戶體驗,但這些內容必須是通過資料庫內容進行綁定的,Farpoint Spread控制項通過輸入很多的內容且包括ComoBox類型數據來綁定下拉列表的數據。如下所示。
當我們下拉類型被指定後,Excel列表的顯示方式隨之變化,比如像下麵一樣來顯示。
上面打上對勾的就我們下一步需要綁定列表數據的列表了,綁定列表的數據也不麻煩,但是需要明確Cell的序號,綁定給他數據源就可以了,可實際上的話,經常要數著Cell的行列號上的數字是非常費心神且很不方便。
對於BindDictItems代碼,我使用了擴展方法,所以這個我們是能通過對象直接調用,具體的函數代碼如下所示,這個就是調用字典業務類獲取數據,但是需要給Items屬性賦值,註意其中的Edittable最好選擇為true,否則它只會類似於DropdownList那樣只顯示裡面列表的內容。
3、如何構造界面自定義錄入
為了能夠很方便的輸入內容,在對於一些例如彈出框選擇內容,圖片編輯,備註內容(很長的時候)的編輯來說,我們通常是通過自定義界面來錄入比較好,比較Excel樣式的界面,錄入單元格很小,有時候也實現不了的。所以通過制定控制項單元格的單擊事件,用來處理特殊錄入信息的操作。
下麵是展開界面部分內容給大家看看,如下麵所示:
例如,對於下拉列表內容,我們需要進行彈出式選擇內容,如下界面所示。
對於圖片單元格,我們單擊就可以彈出下麵的窗體才能夠很方便編輯或者查看。
對於備註內容,我們讓他彈出一個窗體,更好展現和編輯。
4、數據的顯示和保存
在顯示普通的主表數據欄位這方面是非常的簡單的,就是把內容賦值給對應的單元格Text屬性即可,如下所示。
當我們需要保存的時候,就是把對應的內容保存到實體類進行數據保存操作即可。
但是在數據比較多的時候,我們需要把內容保存分開,各個函數負責不同的部分即可,在主表保存後繼續保存其他部分的內容,例如紅色部分就是其他部分的保存操作。
例如工藝過程是一個列表數據,我們在保存的時候是需要指定行列的屬性進行操作,而且我們添加一個Seq的序列號,這樣是用來保存內容的順序,這樣載入的時候,我們就按照這個循序進行載入顯示,否則會出現問題。
其中GetProcess函數,這個就是一個列表中查找對應順序的內容,如果有,那麼我們需要更新這個對應順序的內容,否則我們認為它是新的數據,這樣就新增到資料庫中,所以最後用了InserUpdate就是這個道理。其中GetProcess函數邏輯代碼如下所示。
另外有一點是需要註意的是有些單元格是合併列的,所以它的行列號一定要註意,因為有些地方可能需要跳行。
5、Excel表格的數據列印及導出。
對於使用Farpoint Spread的空間,我們能夠非常方便地對裡面的內容進行列印或者導出Excel,重要的是代碼不繁瑣,如下所示。
我們導出的效果和界面顯示的效果基本上一致的,而且圖片等特殊的格式,也是正常保留在Excel裡面,從感覺上來說是非常的不錯的。
那麼在最後我們附上這個系統的一些截圖作為補充瞭解。
到這裡,我們基本上是介紹完了利用FarPoint Spread表格控制項來構造Winform的Excel表格界面輸入的內容了,在上文我們通過了五個部分來介紹的,一是類似Excel的列表總體界面設計的基本內容,二是下拉列表的綁定,三是如何構造界面自定義錄入,四是數據的顯示和保存,五是Excel表格的數據列印及導出。