2014年10月26日 星期日

ASP.NET MVC 資料分頁操作 - 使用 PagedList.Mvc @ GitHub

資料分頁操作在系統開發裡是一定會遇到的一個基本功能,在 ASP.NET MVC 處理資料分頁操作時,因為沒有內建的預設功能,所以有些人會選擇自己實作分頁功能,不過寫得好不好就見仁見智,而大部分的開發者都會選擇直接使用第三方套件,例如 MvcPaging 或 PagedList.Mvc。

這兩個第三方套件在這個部落格裡都有為數部少的文章做介紹,不過這一年多來主要都是使用 PagedList.Mvc 來實作資料分頁的功能,在使用上不會太複雜只要抓住幾個重點就可以,這邊就把過去幾篇在說明如何使用 PagedList.Mvc 的文章範例做了整理,將範例程式檔放到 GitHub 上,讓需要的朋友可以一邊看著文章然後一邊對照程式,這樣比較容易吸收、瞭解。

放到 GitHub 上的範例程式都是可以正常執行的,建議各位不要只是在 GitHub 上面瀏覽程式,而是直接將原始碼下載一份,直接在你自己的電腦上面執行。

 


2014年10月21日 星期二

ASP.NET MVC 使用政府公開資料 @ GitHub

將去年一連三篇有關使用新北市政府公開資料所做的範例給放在 GitHub 上,

ASP.NET MVC 使用政府公開資料 Part.1

ASP.NET MVC 使用政府公開資料 Part.2 - 增加條件過濾

ASP.NET MVC 使用政府公開資料 Part.3 - 資料分頁 使用 PagedList 的 StaticPagedList

這個範例主要是在說明如何在 ASP.NET MVC 的網站裡使用其他服務所提供的 JSON 資料,然後將接收的資料轉換為物件,並且在頁面上以分頁的方式顯示,再加入搜尋條件以方便對資料做查詢,最後則是藉由這一個範例說明 PagedList.Mvc 的 StaticPagedList 功能。

 


2014年10月20日 星期一

練習題 - ASP.NET MVC 資料列表顯示 + 分頁 + 查詢 + FormMethod.Post

這是一個蠻常見的功能,使用 ASP.NET MVC 開發,將某一個資料以列表方式顯示,並且加上分頁功能,另外還要有查詢功能,而希望顯示分頁的時候可以保留查詢的條件(也就是查詢結果也要能夠分頁顯示),因為有可能查詢的欄位會有相當多個,所以不希望是以 Get 的方式讓查詢條件以 QueryString 的方式傳遞到後端,而是使用 Post 的方式來做傳遞(因為這不是用在一般的前台頁面,而是常見於後台的操作頁面)。

其實這樣的功能也不是相當複雜,我在之前的資料分頁文章也曾經做過說明,例如以下這一篇:

ASP.NET MVC 資料分頁 MVCPaging 2.0 應用 Part.1:一般、表單(Form)

不過這一次會有不一樣的方式來實作,分頁套件會使用「PagedList.Mvc」,因為查詢條件可能會有相當多個的情況,所以會建立一個 ViewModel 來使用,藉由這樣的一個範例說明可以讓初學者能夠瞭解類似這樣的需求應該要如何處理。

 


2014年10月19日 星期日

Visual Studio Extenstions - Codinion

不論是我在測試開發用的電腦或是在工作時所使用的電腦,電腦裡頭的 Visual Studio 都會安裝一些幫助我開發能夠更有效率的擴充套件,有些是免費的而有些則是需要付費購買的,我的觀念是使用者付費,而且我主要的工作就是使用 Visual Studio 開發程式,所以我會花錢購買擴充套件來讓我的工作產能有所提升,身為一個號稱「專業」的程式開發人員就必須要為自己的工作做點投資,有投資就一定會有所收穫。

這篇要介紹的是一個新的擴充套件「Codinion」,雖然是個小套件,但只要是能夠對我們開發有所幫助的都是好套件。

 


2014年10月18日 星期六

ASP.NET MVC 匯出 Excel - 讓使用者挑選要匯出的資料欄位 @ GitHub

最近開始把一些之前在文章裡用來說明的範例做了整理,然後逐步將這些範例都放到 GitHub,其實早在之前我就已經將一些範例都到 GitHub 公開給大家瀏覽與下載,而且我所公開的範例都是可以正常執行的,這麼做的用意就是要讓大家能夠更加瞭解文章裡的程式、截圖所表示的內容,文章礙於篇幅的關係,所以只會對部分的程式加以說明,我一直都認為我在文章裡所交代的已經相當詳盡了,但總是有人反應為何照著我文章裡的程式下去做,但總是做不出最後的結果,有時候真的是我沒有交代一些不是重點的細節,但是這些細節總是會影響程式的執行,雖然這些問題在有經驗的開發者眼中是可以輕易解決,但還是有蠻多開發者光是看文章然後跟著做就已經頭昏眼花了,遇到問題後就沒有太多精神可以去研究如何解決了。

所以公開完整的原始碼就是讓大家可以直接看到我所完成的內容,並且不是片段或是無法執行的假東西,而是可以正確執行的專案,因為我最怕聽到的就是「我都有照著你文章的內容,但還是做不出來」「我所寫的程式跟你文章裡所寫的都是一樣的,為何執行還是有錯?」「架構、程式、格式都一樣,還是一樣做不出來」,有時候並不是完全照抄就能夠做出一樣的東西,總是會有一些地方、細節會影響最後的執行結果,所以當看著我的文章照著做然後遇到問題的時候,就請到 GitHub 上面看原始碼,甚至於我更建議大家去下載完整的原始碼,兩相對照之下就可以知道你所做的到底是遺漏了什麼關鍵或是疏忽了什麼內容。

 


2014年10月12日 星期日

Visual Studion Extexsions - Accent Occurrences

我會在 Visual Studio 裡面裝蠻多擴充功能,會裝這麼多最主要就是輔助我們程式開發,讓我們可以用最有效率的方式來完成程式,在 twMVC #15 研討會裡,我所主講的「開發的效能與效率」就有介紹了相當多的 Visual Studio Extensions,裡頭所介紹的擴充功能都是我實際有在使用而且用了一段時間才會介紹給大家,希望能夠幫助大家能夠更有效率的完成程式開發的工作。

我也曾經看過一些開發者的 Visual Studio 沒有裝擴充套件,在幫他們解決程式問題的時候,總覺得用得不是很順手,而且明明有些功能可以在安裝擴充套件之後就能夠對我們的開發上有很大的幫助,但是他們還是寧願用很麻煩的操作方式去慢慢地完成他們的工作。

我在簡報裡有列出一個擴充套件「Highlight all occurrences of selected word」,這個套件唯一的功能就是將我們在編輯器裡所選擇的字都給高亮顯示起來,不要小看這個功能,在程式裡找尋關鍵字的時候將關鍵字詞給高亮顯示,真的很容易看出來,這個套件從 VS2010 開始就一直在用,既使現在使用 VS2013 也還是在使用,但是直到最近才發現到另一個套件也有同樣的功能,而且還可以讓我們自己設定高亮顯示的顏色,這套件就是「Accent Occurrences」。

 


2014年10月7日 星期二

ASP.NET MVC 匯出 Excel - 讓使用者挑選要匯出的資料欄位 Part.4

經過前面三篇的整理過程之後,在這一篇將會用另一個新的 Controller 來做說明,所以這一篇將會彙整前面的內容並實際應用操作,如果你是一個喜歡結果論的人,只向知道這些功能應該怎麼用的話,那就是看這一篇,而看完了這一篇之後,想要瞭解功能是如何做出來的,那麼就可以在去看前三篇以及再之前的內容。

 


2014年10月6日 星期一

ASP.NET MVC 匯出 Excel - 讓使用者挑選要匯出的資料欄位 Part.3

前一篇「ASP.NET MVC 匯出 Excel - 讓使用者挑選要匯出的資料欄位 Part.2」最後有說到,在最後的匯出時還沒有與我們所使用的 ExportColumnAttribute 類別有所關聯,使得匯出的 Excel 檔案裡面的表格欄位名稱依舊是原本的物件屬姓名稱。

另外就是我們一開始所建立專門用來處理最後匯出結果的 ExportExcelResult,在這個 actionResult 類別裡還必須要去執行匯出資料移除欄位的處理,也許有些人會覺得這沒有什麼,不過我是認為從匯出的原始資料將不要的欄位給移除的這個處理不應該是 ExportExcelResult 的責任,ExportExcelResult 只應該去關注處理接收進來的匯出資料、匯出後的檔案名稱、Sheet 名稱等,而匯出資料的整理應該是在之前就應該要先處理好。

這一篇就來整理這最後的匯出處理的部分。

 


2014年10月5日 星期日

ASP.NET MVC 匯出 Excel - 讓使用者挑選要匯出的資料欄位 Part.2

前一篇「ASP.NET MVC 匯出 Excel - 讓使用者挑選要匯出的資料欄位 Part.1」已經完成了可以讓使用者自行挑選要匯出的資料欄位功能,不過在文末也提到該篇文章內的做法其實並不是很好,問題就在於要匯出的欄位還需要另外用去設定匯出欄位的資料內容,而且匯出的欄位名稱是使用原始的物件屬性名稱,比較好的做法應該是匯出的欄位名稱也應該是以中文或是自訂文字的內容來顯示。

所以接下來就來做些改變,讓這個功能的設定可以簡單一些而不用這麼繁瑣。

 


提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。