如何将List 绑定到gridview?

这可能是一个非常奇怪的问题,因为通常人们只将复杂类型绑定到gridview。 但是我需要绑定一个Int的列表(对于字符串也是如此)。 通常,由于绑定one的属性使用对象属性的名称,但在使用Int或String时,该值恰好是对象本身,而不是属性。

获取对象值的“名称”是什么? 我试过“价值”,“”(空),“这个”,“项目”,但没有运气。

我指的是网络表单中的gridview。

更新

有一个相关的Stack Overflow问题, 如何将List绑定到GridView

可以做到这一点(因为BoundField.ThisExpression等于“!”)。

   <%# Container.DataItem.ToString() %>   

我希望您可能必须将数据放入包装类 – 例如:

 public class Wrapper { public T Value {get;set;} public Wrapper() {} public Wrapper(T value) {Value = value;} } 

然后绑定到List>而不是(作为Value ) – 例如使用类似(C#3.0)的东西:

 var wrapped = ints.ConvertAll( i => new Wrapper(i)); 

或C#2.0:

 List> wrapped = ints.ConvertAll>( delegate(int i) { return new Wrapper(i); } ); 

这与Marc的想法基本相同,但更简单。

它创建了一个匿名包装类,您可以将其用作网格的数据源,然后将该列绑定到“Value”成员:

 List list = new List { 1,2,3,4}; var wrapped = (from i in list select new { Value = i }).ToArray(); grid.DataSource = wrapped; 

如果必须编写要呈现的属性名称,则必须使用返回值的属性将整数(或字符串)值封装在类中。 在网格中,您只需编写<%# Eval("PropertyName") %>