在.NET的DataGridView中作为DataSource的原始类型集合?

时间:2010-02-22 18:02:55

标签: c# .net

是否可以使用原始类型的Collection(例如List<long>)作为DataGridView的DataSource?

经过半心半意的努力使其成功后,我放弃了并创建了一个简单的结构,因此我可以为DataGridViewColumn提供一个PropertyName。但是现在我必须在处理UI时打包我的值,为我的应用程序的其余部分取消它们(从而否定数据绑定的好处),并在我的结构中实现IComparable和IEquatable以支持List排序和搜索(一个简单的足够的任务,结构本身的存在是非常杂乱的)。

为了给UI小部件提供值列表,似乎需要花费大量的开销和杂乱。当然有一种更简单的方法......

2 个答案:

答案 0 :(得分:1)

如果您要向用户显示要显示的数字列表,请考虑使用ComboBox。这样您就可以将DataSource设置为List<long>

但是,如果您确实需要DataGridView,则可以将List<long>更改为List<Long?>,现在可以将网格视图列绑定到有界的Value属性名单。这种方法可以为您节省自定义结构,但它仍然是一种折衷的解决方案。

答案 1 :(得分: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();