如何将List <int>绑定到gridview?</int>

时间:2009-02-05 11:10:26

标签: c# asp.net list gridview

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

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

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

更新

有一个相关的Stack Overflow问题, How to bind a List to a GridView

5 个答案:

答案 0 :(得分:9)

<BoundField DataField="!" />可以解决问题(因为BoundField.ThisExpression等于“!”)。

答案 1 :(得分:4)

<asp:TemplateField>
   <ItemTemplate>
       <%# Container.DataItem.ToString() %>
   </ItemTemplate>
</asp:TemplateField>

答案 2 :(得分:3)

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

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

然后绑定到List<Wrapper<T>>代替(Value) - 例如使用类似(C#3.0)的东西:

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

或C#2.0:

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

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:-1)

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