2010-02-22 77 views
1

是否可以使用原始类型集合(如List<long>)作为DataGridView的数据源?作为.NET的DataGridView中的数据源的原始类型集合?

经过半途而废的尝试使其工作,我给了并创建了一个简单的结构,所以我可以给DataGridViewColumn一个PropertyName。但现在,我必须在处理UI时将我的值框起来,为我的应用程序的剩余部分解除它们(从而否定数据绑定的好处),并在结构中实现IComparable和IEquatable以支持List排序和搜索(简单足够的任务,结构本身的存在足够混乱)。

这似乎是一个很大的开销和混乱,只是为UI小部件给出一个值列表。当然有一个更简单的方法...

回答

1

如果你有一个数字列表,你想要显示给用户考虑使用ComboBox。这样,您可以将DataSource设置为List<long>

但是,如果你真的需要DataGridView你可以改变你List<long>List<Long?>,你现在可以在网格视图的列绑定到界列表的Value财产。这种方法为您节省了自定义结构,但它仍然是一个妥协解决方案。

+0

谢谢,列表应该没问题。我不知道可空类型。 – PunctuallyChallenged 2010-02-22 20:59:05

+0

值得注意的是,可为空的类型的'Value'属性是只读的,因此无法使用此解决方法编辑'DataGridView'单元格。 – PunctuallyChallenged 2010-02-23 18:45:58

1

@João的解决方案很好,如果你能控制你的代码。

如果你不控制列表进来,你可以把它包装在一个linq表达式中以获得一个命名实体绑定。

List<int> list = new List<int> {1, 1, 1}; 
var q = from item in list select new { bindingname = item }; 
dataGridView1.DataSource = q.ToList(); 
+0

有趣,谢谢。 – PunctuallyChallenged 2010-02-22 21:09:42