C#WinFrom窗体 DataGridView显示不出数据库数据Personnel p=new Personnel();
List<Personnel> list=new List<Personnel>();
list=p.GetPersonnelInfo(sql);// List<>
dataGridView1.DataSource=list;
list为 某对象范型集合运行后datagridView显示不出数据 求解

解决方案 »

  1.   

    断点测试看到`~DataSource 有数据
      

  2.   

    dataGridView1.DataBind
    少了这个吧!
      

  3.   

    Winfrom 没有DataBind
    我在网站上DataBind
    也不出数据
      

  4.   

    你只是把值给DataGridView,没给它绑定显示啊
    dataGridView1.DataBind();
      

  5.   

    C:\Documents and Settings\Administrator\桌面\未命名.jpg
    ...图在硬盘里??
      

  6.   

    看是不是你DataGridView中的绑定的字段有没有和数据库的字段一致
      

  7.   


    Personnel p=new Personnel();
    List<Personnel> list=new List<Personnel>();
    list=p.GetPersonnelInfo(sql);// List<>
    dataGridView1.DataSource=list;
    dataGridView1.DataBind();
      

  8.   


    哎  发不了图~~窗体上DataGridView没有DataBind()方法
      

  9.   


    窗体上DataGridView没有DataBind()方法 哎  ~~救命啊~
      

  10.   

    检查红色部分,看list有数据吗?
      

  11.   

    那你检查dataGridView1看有没有设置字段绑定
      

  12.   

    那为什么如果返回的是DataTable类型的就用上面那语句就出数据了  同理那list应该绑了吧
      

  13.   

    实在不行 你就改成DataTable了呗
      

  14.   

     //初始化绑定dataGridView1
                DataSet ds = new DataSet();
                ds = user.GetListInfo("1=1");
                dataGridView1.DataSource = ds.Tables[0];//指定数据源
    同时看你的dataGridView1字段是否与你查询出来的字段名一致
      

  15.   

    说实话感觉就是你list里面没数据
    Personnel p=new Personnel();
    List<Personnel> list=new List<Personnel>();
    list=p.GetPersonnelInfo(sql);// List<>
    Personnel是类,你在类里面还能调用GetPersonnelInfo方法获取list??
    我菜鸟想不通,等待高人
      

  16.   

    你不用List,改成这样看看。
    Personnel p=new Personnel();
    //List<Personnel> list=new List<Personnel>();
     DataSet ds = new DataSet();
    ds=p.GetPersonnelInfo(sql);
    //list=p.GetPersonnelInfo(sql);// List<>
    dataGridView1.DataSource=list;
      

  17.   

    不行,因为DataView只会去自动识别DataTable,而不会去自动识别泛型,所以要用list泛型做数据源的话,你必须绑定字段
      

  18.   

                string sql = "select*from Personnel";
                PersonnelDAL personnelDAL = new PersonnelDAL();
                List<Personnel> list = new List<Personnel>();
                list = personnelDAL.GetAllPersonnels(sql);
                Repeater1.DataSource = personnelDAL.GetAllPersonnels(sql);
                Repeater1.DataBind();奇怪的事情又来了~~在网站上也行不同~~怪事了!! 难道 List<>有问题?
      

  19.   

    那个写错了 是PersonnelDAL p=new PersonnelDAL();数据访问层
      

  20.   

    这个sql语句都错了....
    看看GetPersonnelInfo方法返回的是什么??
      

  21.   

    哦,忘了。是这样,可以实现
    Personnel p=new Personnel();
    //List<Personnel> list=new List<Personnel>();
     DataSet ds = new DataSet();
    ds=p.GetPersonnelInfo(sql);
    //list=p.GetPersonnelInfo(sql);// List<>
    dataGridView1.DataSource=ds.Tables[0];
      

  22.   

    改成DataSet DataTable都可以啊 List<>不行也要有个理由啊~哎~~晕了 饭都没吃
      

  23.   

    错别字  通  ,,上面带刚才乱改错了点  Repeater1.DataSource = list;
      

  24.   

    这个没错 用ListBox 控件可以接受数据啊  现在关键是那DataGridView 绑定 list<>问题
      

  25.   

    应该DataGridView 绑定 list<>也可以实现的吧  在网上搜都有这个解决方法 不过试了都不行  要不你们试下
      

  26.   

    俺发的是本地机图片~怪不得没图~等等截个图先~~证明下list是有数据的~~
      

  27.   

    在视图界面选中DataGrid右击,添加列,对应List的字段,一列一列加上去即可
      

  28.   

    大家看到没有  DataSource数据源已经获得数据了 可是显示不出来!
      

  29.   

    在界面里点击dataGridView1然后点右上角的小三角,看启用添加那项有没有挑钩...如果还不行,那你就用datatable吧
      

  30.   

    检查你的dataGridView1是否被你多设置了一个DataMember属性了,这个属性不需要。另外List<T>是肯定支持的,我第一次玩LINQ TO SQL就传递了List<T>匿名类型给它,直接认到无问题。
      

  31.   


    DataMember属性为空,也添加了列 指定了数据DataPropertyName属性为对应的列 还是不行 晕了
      

  32.   

    hwenycocodq520
    你是谁。 - -加我QQ 910027179
      

  33.   

    如果list有数据
    那应该是List<Personnel>里的Personnel没有设置属性即setget,using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                this.Form1_Load(null, null);
            }        private void Form1_Load(object sender, EventArgs e)
            {
                List<poe> lis = new List<poe>();
                for (int i = 0; i < 10; i++)
                {
                    poe p = new poe(i.ToString(), "name" + i.ToString());
                    lis.Add(p);
                }            //this.dataGridView1.AutoGenerateColumns = true;
                this.dataGridView1.DataSource = lis;
                DataTable dt = new DataTable();
                dt.Columns.Add("Id");
                dt.Columns.Add("Name");            for (int i = 0; i < 10; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Id"] = i.ToString();
                    dr["Name"] = "name" + i.ToString();
                    dt.Rows.Add(dr);
                }
                this.dataGridView2.DataSource = dt;        }    }
            public class poe
            {
                private string fId = "";
                private string fName = "";            public poe(string sid, string sname)
                {
                    fId = sid;
                    fName = sname;
                }            public string Id
                {
                    get { return fId; }
                    set { fId = value; }
                }            public string Name
                {
                    get { return fName; }
                    set { fName = value; }
                }        }
       
    }
      

  34.   

    给Personnel类里要显示的字段设成属性,比如要显示的是id和name,把它们get和set的.
      

  35.   

    如果返回为datatable,在DataSource绑定时后面要加dt.Table[0]DataSet ds = new DataSet();
    ds=p.GetPersonnelInfo(sql);
    dataGridView1.DataSource = ds.table[0];Datatable dt = new Datatable ();
    dt=p.GetPersonnelInfo(sql).table[0];
    dataGridView1.DataSource = dt;
      

  36.   

     对对,我刚才的确没设属性,我所有字段public 没属性,不过俺老师说不要写什么属性构造函数之类的~不知道他葫芦买啥药~~不设属性能完成上面的工作吗?
      

  37.   

    ...问下:他说可以用datatable能显示,list显示不出.也就是说数据的get/set不会影响datatable的绑定与显示?
      

  38.   

    至少list<p>这种,p类里需要绑定的字段是需要设置成属性的.
      

  39.   

    对~这问题问的好~~俺刚想问~~我DataTable 不需要设属性~~哎~~原理是什么
      

  40.   

    不是LIST<T>  用ILIST<T>
      

  41.   

    为什么要设构造函数还有一些属性~~?直接public 字段就可以了啊~~什么安全不安全的应该不用考虑吧~代码都是公开的~ 这问题俺老师也问过我啊``求解 
      

  42.   

    file://C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\45Q3G16J\1c7346716874b18ab7fd7b32bffea678[1].jpg
      

  43.   


    我在WinFrom实现的~~没DataBind()这属性~~asp.net网站就有~ 
      

  44.   

    当DataGridView的DataSource绑定的为DataTable,dataset时,当DataTable的内容发生改变时,DataGridView中的内容会自动跟随DataTable改变而不用重新绑定数据源;而把List<T>绑定到DataGridView则不然,默认是绑定List<T>中的T的所有public 属性!
    至于原因,额,也许是微软提倡这样做,都是用属性,更安全吧
      

  45.   


    那意思是说用DataTable,dataset效率比List<T> 要高点是吧,不用重新绑定;那用List<T>好还是DataTable呢,List<T>有类型安全优点
      

  46.   

    额,不是这个意思,我的意思是微软默认绑定(自动更新)list<t>的所有public属性,也许是因为属性更安全,提倡这样做,才这样默认的吧..而datatable里的column本身也是属性,比如id,你debug的时候就能看到有private的_id的,
      

  47.   

    这只是我个人猜测,唯一可以肯定的是,微软对datatable和list<t>是不同处理的.
    list<t>继承的是IList 接口。
    而DataTable 和 DataSet 类是IListSource 接口.