DataGridView的一些小技巧

最近在winfrom客戶端上需要用DataGirdView來展現列表,遇到的一些小問題和解決方案,包括:列寬自適應,動態數據綁定(隨時補充中):

訪問我的個人網站獲取更多文章

列寬自適應

由於窗體可以自動增大縮小,所以需要設置列寬自適應,類似於控件的dock屬性,採用DataGridView的AutoSizeColumnMode屬性來實現,其可以選的值和解釋如下:

  • AllCells 調整列寬,以適合該列中的所有單元格的內容,包括標題單元格。

  • AllCellsExceptHeader 調整列寬,以適合該列中的所有單元格的內容,不包括標題單元格。

  • ColumnHeader 調整列寬,以適合列標題單元格的內容。

  • DisplayedCells 調整列寬,以適合當前屏幕上顯示的行的列中的所有單元格的內容,包括標題單元格。

  • DisplayedCellsExceptHeader 調整列寬,以適合當前屏幕上顯示的行的列中的所有單元格的內容,不包括標題單元格。

  • Fill 調整列寬,使所有列的寬度正好填充控件的顯示區域
    只需要水平滾動保證列寬在DataGridViewColumn.MinimumWidth 屬性值以上。
    相對列寬由相對 DataGridViewColumn.FillWeight 屬性值決定。
  • None 列寬不會自動調整。

  • NotSet 列的大小調整行爲從 DataGridView.AutoSizeColumnsMode 屬性繼承。

需要自適應應當設置爲Fill

但是隨着而來的一個問題是,該方法得到的列寬是平分了當前窗口大小,我們需要不同列具有不同的寬度並且按照比例縮放.
解決方法是:在設計器編輯列的對話框裏面,找到列的FillWeight屬性,該屬性爲列寬的權重,當設置AutoSizeColumnMode爲Fill的時候,根據不同列之間的FillWeight的值,按照比例進行分配列寬

動態數據綁定

雖然動態綁定很簡單,但是因爲前面提及了列寬的問題,所以希望提前設計好每一列,減少動態綁定時候生成的列還需要進行繁瑣的格式設計的弊端,即查詢結果綁定到已有的列.
採取的方法是:
通過編輯列設定好每一列以及格式,然後設定每一列的DataPropertyName爲sql語句查詢結果(也即綁定到的datatable中的列名稱),則數據綁定後,對應列則能夠正常填充.

代碼如下:

  DataTable db = adapter.executeQuery("select rowid,sigid,floatvalue  from tran0804");//查詢數據庫結果到datatable中
  dataGridView1.DataSource = db; //數據綁定

省去了綁定過程中的設計以及sql查詢也不需要通過as進行重命名

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章