.NET新手指南:輕松自定義DataGridView控件
譯文【51CTO快譯】在創(chuàng)建到外部數(shù)據(jù)的連接時,.NET配置向導是一個很好的開始,它不僅可以為你創(chuàng)建點擊式連接,還可以快速簡單地產(chǎn)生一個控件,用于用戶檢索、顯示和操作數(shù)據(jù),但向導很少產(chǎn)生用戶需要的功能的控件,你可能想對向導產(chǎn)生的控件進行調整——增加需要的功能。
本文的目標讀者是.NET新手。首先講述如何創(chuàng)建一個新連接,然后講述如何自定義結果控件,使用Visual Basic Express(VB Express)配置向導,本文將描述如何填充DataGridView控件,然后按照以下步驟進行提高:
1、行的顯示顏色交替,構成一個綠色條效果;
2、禁用掉DataGridView內置的單列排序功能;
3、執(zhí)行這個窗體時顯示編輯行。
開始
VB Express提供了許多方法檢索和操作外部數(shù)據(jù),例如,只需要運行VB Express的配置向導就可以建立一個到MS Access 示例數(shù)據(jù)庫Northwind.mdb中Customers的連接:
1、啟動VB Express,然后在標準工具欄上點擊新建項目按鈕,在彈出的對話框中選擇Windows Form Application;
2、在名稱控件處輸入一個有意義的名字,點擊確定按鈕;
3、點擊解決方案資源管理器右下角的數(shù)據(jù)源標簽,如果沒有看到這個標簽,從“數(shù)據(jù)”菜單中選擇顯示數(shù)據(jù)源即可;
4、點擊新建數(shù)據(jù)源按鈕,啟動新建數(shù)據(jù)源配置向導;
5、點擊下一步,數(shù)據(jù)庫選項保持默認設置;
6、在下一個面板中點擊新建連接;
7、在彈出的新建連接對話框中,點擊修改,從彈出的修改數(shù)據(jù)源對話框中選擇Access數(shù)據(jù)庫文件,然后點擊確定按鈕;
8、在新建連接對話框中點擊瀏覽,找到Northwind.mdb的位置(在Office目錄的Samples文件夾下),然后點擊確定按鈕;
9、點擊測試連接,然后點擊確定按鈕清除確認消息;
10、如果連接工作正常,點擊確定返回向導窗口,然后點擊下一步繼續(xù);
11、VB Express會詢問你是否要拷貝數(shù)據(jù)庫,如果你選擇“是”,將會把整個數(shù)據(jù)庫拷貝到你的項目下,在這個例子中,我們選擇“否”;
12、接下來的面板中讓你將配置信息保存到配置文件中,默認是要保存,點擊下一步即可(向導會檢索數(shù)據(jù)庫對象,并在源文件中顯示它們,在這里你可以識別一下將要在.Net項目中檢索和操作的數(shù)據(jù));
13、點擊“+”號展開表節(jié)點,選中Customers表,保留默認的NorthwindDataSet,VB Express的數(shù)據(jù)集;
14、點擊完成,VB Express將會檢索指定的數(shù)據(jù)。
創(chuàng)建好連接后,還需要一個窗體來顯示數(shù)據(jù),請跟著我做:
1、點擊數(shù)據(jù)源標簽;
2、點擊Form1標簽,然后從數(shù)據(jù)源標簽拖動Customers數(shù)據(jù)集到窗體設計器中的Form1上,VB Express將會產(chǎn)生一個DataGridView控件并自動命名,圖1顯示了結果窗體和窗體設計器中的網(wǎng)格。
窗體和窗體設計器中的網(wǎng)格:配置向導創(chuàng)建的可以顯示數(shù)據(jù)的控件
3、從文件菜單中選擇保存所有,然后點擊保存按鈕。
至此,你已經(jīng)有一個來自Northwind數(shù)據(jù)庫的數(shù)據(jù)集,和一個顯示該數(shù)據(jù)的DataGridView控件及控件所在的窗體,所有需要做的就是運行一下向導。
#p#
行顯示顏色交替
***個增強是,使用向導創(chuàng)建的控件可以通過修改行的顏色提高易讀性,使用DataGridView時,可以很容易修改屬性:
1、在窗體設計器中,選擇DataGridView控件(不要雙擊,將會打開窗體的代碼頁);
2、在屬性窗口中,打開AlternatingRowsDefaultCellStyle屬性;
3、點擊BackColor屬性的下拉箭頭,顯示CellStyleBuilder對話框;
4、選擇一個與當前顏色不同的顏色(默認是白色),在這個例子中,選擇藍色,如圖2所示,然后點擊確定按鈕。
CellStyleBuilder對話框:選擇一個交替的行顏色
5、按F5運行程序,圖3顯示了使用交替顏色填充的網(wǎng)格控件。
填充好的網(wǎng)格控件:行的顏色在藍色和白色間交替使用
記住,只設置交替的一行的屬性顏色就可以了,不是要設置所有行的屬性,如果還想更多一點變化,相應設置BackColor和ForeColor即可。
控制排序順序
最初,你產(chǎn)生的控件是按表的順序填充的,因為還沒有指定排序順序,然而,DataGridView是天生就支持排序的,只需要點擊標題欄,控件就會以該欄升序排序記錄,再點擊一次就按降序排序,對于大多數(shù)控件而言,在填充控件時你都可以排序數(shù)據(jù):
1、在窗體設計器中,選擇CustomersBindingSource組件,將會在相應的屬性窗口中更新其項目;
2、在窗口的底部,找到sort屬性,輸入city,如圖4所示。
找到Sort,輸入City:指定一個排序列
3、按F5運行程序,正如你在圖5中所看到的,控件按照City值以升序排序記錄。如果想降序排列的話,只需要加上DESC關鍵詞就可以了,即輸入City DESC。
控件排序記錄:窗體通過City值排序記錄
你可能會禁止這個原生態(tài)的排序功能,但你需要為每個禁止排序的列編寫一小段代碼,例如,為了禁止Contact Title列的排序功能,請跟著我做:
1、在設計視圖窗體中,從視圖菜單選擇代碼,或按F7;
2、開始輸入代碼,很快你就會發(fā)現(xiàn)智能感應不會顯示控件包含的列名,相反,它是按照位置顯示列名的,這不是引用列的***辦法;
3、為了修改DataGridView控件的列的默認名稱,必須修改控件本身的Columns集合,在設計視圖中,雙擊網(wǎng)格(不是窗體),你可能需要稍微放大一下窗體,以便準確選中一個網(wǎng)格,當屬性標題顯示CustomersDataGridView時,你就可以確定選中的是網(wǎng)格而不是窗體了;
4、定位Columns集合,然后點擊Builder按鈕,啟動編輯列對話框,如圖6所示。
點擊Builder按鈕:查看網(wǎng)格的Columns集合
5、在選擇列控件中,選擇ContactTitle;
6、在設計區(qū)域(右下角),這個控件的Name屬性值是DataGridViewTextBoxColumn4,使用一個更有意義的名字替代它,這里我們輸入DataGridViewTextBoxContactTitle,如圖7所示。對那些不想設置的隱形列,將其Visible屬性設置為false即可。
為Name屬性輸入一個有意義的名稱
7、點擊確定返回代碼窗口(Form1.vb);
8、輸入下面的代碼:
- Me.DataGridViewTextBoxContactTitle.SortMode = DataGridViewColumnSortMode.NotSortable
這一次智能感應按名稱而不是位置列出了列,如圖8所示。
智能感應按名稱列出了列:使用列名代替位置號
9、保存所做的修改;
10、按F5執(zhí)行項目,在結果窗體中,點擊ContactTitle的標題欄,這一次窗體不會排序記錄了,這是因為輸入的代碼禁用了排序功能。
#p#
顯示編輯行
目前,示例窗體顯示了91條記錄,此時如果用戶想要插入一行記錄,必須滾動窗體到編輯行,你可以通過編程讓窗體自動顯示編輯行,將下面的代碼添加到窗體的Load事件中,如圖9所示。
- Me.CustomersDataGridView.FirstDisplayedScrollingRowIndex = CustomersDataGridView.Rows.Count - 1
在窗體的Load事件中添加代碼:強制窗體在載入時顯示編輯行
按F5運行這個窗體,正如你在圖10中所看到的,這個窗體顯示了一些記錄和編輯行。
顯示記錄和編輯行的窗體:現(xiàn)在啟動窗體,可以看到顯示了編輯行
這個語句從行數(shù)量減去一個1,這樣可以防止異常發(fā)生,因為編輯行沒有真正的索引,直到你點擊了它,即使它影響了行的數(shù)量。這個方法僅僅是確保***一行是可見的,所有的記錄仍然是可用的,現(xiàn)在窗體顯示的記錄條數(shù)與其容量緊密相關,代碼不需要做任何修改。
通過禁用編輯行,這樣就將窗體改為瀏覽窗體了,不能再插入新的行了,要禁用編輯行,只需要在窗體的Load事件中添加一句:
- DataGridView1.AllowUserToAddRows = False
將AllowUserToAddRows屬性設置True就啟用編輯行。
自定義控件使其更易用和靈活
自定義示例窗體并不需要花多少時間:
1、只需要簡單的修改就可以實現(xiàn)交替顏色行;
2、只需要一行代碼就可以禁用掉內置的排序功能;
3、只需要一行代碼就可以顯示編輯行。
如果你是從Access或SQL Server轉過來的,當你見識了可以創(chuàng)建和實現(xiàn)一個既可以瀏覽數(shù)據(jù)又可以編輯數(shù)據(jù)的窗體時,你一定會感到滿意。
原文:The .NET Newbie's Guide to Customizing the DataGridView Control
作者:Charlotte Foust, Susan Sales Harkins
【編輯推薦】