代码之家  ›  专栏  ›  技术社区  ›  CodeClimber

如何将列表<int>绑定到GridView?

  •  7
  • CodeClimber  · 技术社区  · 17 年前

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

    获取对象值的“名称”是什么?我试过“value”、“(空)、“this”、“item”,但没有运气。

    我指的是Web表单中的网格视图。

    更新

    有一个相关的堆栈溢出问题, How to bind a List to a GridView .

    5 回复  |  直到 15 年前
        1
  •  9
  •   Peter Mortensen Pieter Jan Bonestroo    15 年前

    <BoundField DataField="!" /> 可能会变戏法(因为 BoundField.ThisExpression 等于“!”.

        2
  •  4
  •   terjetyl    17 年前
    <asp:TemplateField>
       <ItemTemplate>
           <%# Container.DataItem.ToString() %>
       </ItemTemplate>
    </asp:TemplateField>
    
        3
  •  3
  •   Marc Gravell    17 年前

    我希望您可能需要将数据放入包装类中,例如:

    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:

    List<Wrapper<int>> wrapped = ints.ConvertAll<Wrapper<int>>(
        delegate(int i) { return new Wrapper<int>(i); } );
    
        4
  •  2
  •   M4N    17 年前

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

    它创建一个匿名包装类,您可以将其用作网格的数据源,然后将该列绑定到“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;
    
        5
  •  -1
  •   Peter Mortensen Pieter Jan Bonestroo    15 年前

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

    推荐文章