如何将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") %>
。