关于DataGridView的数据源绑定字符串两个值得注意的问题
1.
LINQ的查詢結果無法直接作為DataGridView的數據源
DataGridView的DataSource屬性為object類型,但并不意味著任何類型都可以作為DataGridView的數據源。DataGridView的數據源必須是實現以下接口的任意類型:
??? (1)IList 接口,包括一維數組。
??? (2)IListSource 接口,例如,DataTable和DataSet類。
??? (3)IBindingList 接口,例如,BindingList<T>類。
??? (4)IBindingListView 接口,例如,BindingSource類。
而LINQ查詢結果為IEnumerable<T>或IQueryable<T>類型,如果直接作為數據源綁定到DataGridView,將無法顯示任何內容。Enumerable類為IEnumerable<T>接口定義了一系列擴展方法,其中的ToList<T>方法可以將IEnumerable<T>轉換為List<T>。這樣,就可以綁定到DataGridView了。如
var names = from u in list select u.Name; dataGridView1.DataSource = names.ToList();2.
字符串無法直接作為DataGridView的數據源
如果將List<string>綁定到DataGridView,往往會想當然的認為字符串會作為DataGridView的內容顯示。然而實際顯示的卻是字符串的長度,這是為什么呢?如
dataGridView1.DataSource = new List<string> { "just", "a", "test" };
DataGridView默認情況下會顯示所綁定對象的屬性,如綁定一個List<User>,User的Name、Age、Gender等屬性會作為Column的內容顯示出來。對于一個字符串來說,只有一個實例屬性Length,因此顯示的即為字符串的長度了。當然,如果有其他屬性存在,仍然會作為Column顯示出來。
要想使DataGridView顯示字符串集合,可以使用匿名類型將字符串進行包裝:
var test = new List<string> { "just", "a", "test" }; dataGridView1.DataSource = (from s in test select new { s }).ToList();轉載于:https://www.cnblogs.com/zhangtao/archive/2011/03/02/1969295.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的关于DataGridView的数据源绑定字符串两个值得注意的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【自然框架】分享 n级联动下拉列表框
- 下一篇: 关于web服务器TIME_WAIT值高的