DataGridView 綁定list類, 如何只顯示list集合中類的部分屬性


一,顯示實體的全部屬性

            當DataGridView的列名就是Class T的屬性的時候,這時,只需要綁定數據源,然后手動更改列名就好。

<span style="font-size:14px;"> '將dt轉換為泛型集合 myList = EntityHelper.convertToList(Of EntityUser)(dt) TextBox1.Text = myList.Count '在文本框里面顯示出查詢到的教師數目 If (myList.Count > 0) Then '如果查詢到記錄 ''''將查詢到的數據顯示到DataGridView中 myDataGrid.DataSource = myList '設置控件的數據源:但是這樣設置還不夠,因為列的名字顯示出來還是英文的,所以,還應該設置沒列的名字。 '修改列名 myDataGrid.Columns(0).HeaderText = "卡號" myDataGrid.Columns(1).HeaderText = "密碼" myDataGrid.Columns(2).HeaderText = "教師姓名" myDataGrid.Columns(3).HeaderText = "教師級別" myDataGrid.Columns(4).HeaderText = "注冊日期" myDataGrid.Columns(5).HeaderText = "注冊時間" myDataGrid.Columns(6).HeaderText = "注銷日期" myDataGrid.Columns(7).HeaderText = "注銷時間" myDataGrid.Columns(8).HeaderText = "上機狀態" Else MsgBox("沒有查詢到任何記錄!") End If</span>

顯示結果如下:

 

  二,顯示Class T 的部分屬性

                   有時候,我們並不是要顯示T 的全部屬性,只需要顯示一部分,比如,我們在顯示教師信息的時候,可能不需要顯示教師的密碼,這時候該怎么辦呢?

           方法一: 加載完所有數據后手動移除列

                    如上圖中,如果我想移除密碼這一列,只需在加載完所有數據后,再加上一句代碼:

'加載完所有數據后手動移除密碼這一列
            myDataGrid.Columns.Remove("Pwd")

                當再次顯示,結果就如下圖:


              雖然也能實現想要的效果,但是總感覺這么做有點兒雷,就好像吃了東西再吐出來那樣,反正我是不用。還是看看別的方法吧。

              方法二:設置DataPropertyName屬性

                         例如,我現在只想顯示用戶名,首先,右擊窗體上的DataGridView控件,然后選擇編輯列:

 

 

 

 

添加一個叫用戶名的列,然后設置列的DataPropertyName屬性,通過這個屬性,可以設置綁定到實體的某個屬性值,datatable的某個列等。  這里的 DataPropertyName 值要跟實體的屬性名對應

 

 

 


            之后,我們在代碼里面寫入

<span style="font-size:18px;">       myDataGrid.AutoGenerateColumns = False '不允許自動添加列 myDataGrid.DataSource = myList '設置數據源</span>
--如果是數據庫查詢出來的list轉換為列表table
datapropertyname應該為轉換表的字段(不區分大小寫)
     這樣就ok了~

        運行下,可以看到這種效果:

       

         小結:

                   真心感覺DataGridView這個空間非常好用,直接綁定數據源就可以顯示數據。

           而且如果在D層,查詢完成之后,就將datatable轉化為實體集,當結果傳到U層DataGridView顯示的時候,直接指定dataSource為實體集合,那么,整個過程沒有像以前vb中MSHFlexGrid控件那樣:

             

          

        這個過程每次都要一行一行的賦值,避免了filds屬性在指定時出錯的問題,而且代碼更簡潔了,我們的工作量也大大減少了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM