none
GridView 或ListView 是否可以直接绑定List<T> ? RRS feed

  • 问题

  • 我看文档上说,GridView 或ListView都是直接邦定 DataTable or DataSet
    这样的话,我其实还是需要先把 List<T> 中的内容转化到DataTable or DataSet 中,然后才可以帮定。
    等更新完毕后还要再从 DataTable 转化回 List<T>

    有没有更加直接一些的方法呀?

    谢谢

    Charles shao
    2010年2月23日 10:55

答案

  • 你好!
         数据源可以是实现下列接口之一的任何类型:
    周雪峰
    2010年2月23日 15:05
    版主
  • 你好!

    完全是可以的,使用 BidingSource 绑定 List<T> 在 DataGridView 上修改数据后,会自动更新到 List<T> 的。

    知识改变命运,奋斗成就人生!
    2010年2月24日 1:07
    版主
  • 你可以直接进行绑定

     public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                List<user> users = new List<user>();
                users.Add(new user(1, "1", 1));
                users.Add(new user(2, "2", 2));
                users.Add(new user(3, "3", 3));
                this.GridView1.DataSource = users;
                this.GridView1.DataBind();
    
            }
        }
        public class user
        {
            private int _id;
            private string _name;
            private int _age;
    
            public int id
            {
                get { return _id; }
                set { _id = value; }
            }
    
            public string name
            {
                get { return _name; }
                set { _name = value; }
            }
    
            public int age
            {
                get { return _age; }
                set { _age = value; }
            }
    
            public user() { }
    
            public user(int id, string name, int age)
            {
                this.id = id;
                this.name = name;
                this.age = age;
            }
        }

    努力+方法=成功
    2010年2月24日 1:18

全部回复

  • 你好,
    可以啊~,代码不写了,你试一下,呵呵~



    我们要把爱心传递给更多需要帮助的人。
    微软(黑龙江).Net俱乐部:http://hlj.cnblogs.com
    博客:http://terryfeng.cnblogs.com
    微博:http://t.sina.com.cn/terryfeng
    个人:http://www.terryfeng.com
    2010年2月23日 14:00
  • 你好!
         数据源可以是实现下列接口之一的任何类型:
    周雪峰
    2010年2月23日 15:05
    版主
  • 你好!

    完全是可以的,使用 BidingSource 绑定 List<T> 在 DataGridView 上修改数据后,会自动更新到 List<T> 的。

    知识改变命运,奋斗成就人生!
    2010年2月24日 1:07
    版主
  • 你可以直接进行绑定

     public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                List<user> users = new List<user>();
                users.Add(new user(1, "1", 1));
                users.Add(new user(2, "2", 2));
                users.Add(new user(3, "3", 3));
                this.GridView1.DataSource = users;
                this.GridView1.DataBind();
    
            }
        }
        public class user
        {
            private int _id;
            private string _name;
            private int _age;
    
            public int id
            {
                get { return _id; }
                set { _id = value; }
            }
    
            public string name
            {
                get { return _name; }
                set { _name = value; }
            }
    
            public int age
            {
                get { return _age; }
                set { _age = value; }
            }
    
            public user() { }
    
            public user(int id, string name, int age)
            {
                this.id = id;
                this.name = name;
                this.age = age;
            }
        }

    努力+方法=成功
    2010年2月24日 1:18
  • 谢谢!您给的代码已经非常详细了。

    另外我还想问一下,是不是this.GridView1.DataSource = List<T>以后, GridView1 自动绑定了 T 类型的所有Public 属性。
    如果我只想在GridView1 中 显示 T 类型中的某几个属性(如: user.ID, user.Name) 的话,是否还可以通过邦定来实现? 还是只能自己手写其它控制代码呢。

    Thank you so much!
    2010年2月24日 2:12
  • 设置 datagridview.AutoGenerateColumns = false; 取消自动创建列。然后你自己写代码添加 dataGridView 的列。

    知识改变命运,奋斗成就人生!
    2010年2月24日 2:16
    版主
  • 你好!
         默认是绑定List<T>中的T的所有public 属性!

    周雪峰
    2010年2月24日 3:21
    版主