一段代码如下,在dataGridView里插入数据,但是为什么不显示呢,搞不懂,哪位能指点下呢?谢谢
另外一个问题,我明明插入的是一行数据,为什么会是有2行,而且是空的?            DataTable tbl = new DataTable("Result");
            DataColumn dc = null;
            dc = tbl.Columns.Add("ID", Type.GetType("System.Int32"));
            dc.AutoIncrement = true;
            dc.AutoIncrementSeed = 1;
            dc.AutoIncrementStep = 1;
            dc.AllowDBNull = false;            dc = tbl.Columns.Add("Product", Type.GetType("System.String"));
            dc = tbl.Columns.Add("Version", Type.GetType("System.String"));
            dc = tbl.Columns.Add("Description", Type.GetType("System.String"));            DataRow row;
            row = tbl.NewRow();
            row["Product"] = "Knife";
            row["Version"] = "2.0";
            row["Description"] = "Prepare for fight!";
            tbl.Rows.Add(row);            dataGridView1.Columns.Add("Product", "Product");
            dataGridView1.Columns.Add("Version", "Version");
            dataGridView1.Columns.Add("Description", "Description");
            dataGridView1.DataSource = tbl;

解决方案 »

  1.   


    DataTable tbl = new DataTable("Result");
                DataColumn dc = null;
                dc = tbl.Columns.Add("ID", Type.GetType("System.Int32"));
                dc.AutoIncrement = true;
                dc.AutoIncrementSeed = 1;
                dc.AutoIncrementStep = 1;
                dc.AllowDBNull = false;            dc = tbl.Columns.Add("Product", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Version", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Description", Type.GetType("System.String"));            DataRow row;
                row = tbl.NewRow();
                row["Product"] = "Knife";
                row["Version"] = "2.0";
                row["Description"] = "Prepare for fight!";
                tbl.Rows.Add(row);           DataSet ds=new DataSet();
               ds.Table.Add(tbl);
                dataGridView1.DataSource = ds;           dataGridView1.DataBind();
      

  2.   


                //第一次
                dataGridView1.Columns.Add("Product", "Product");
                dataGridView1.Columns.Add("Version", "Version");
                dataGridView1.Columns.Add("Description", "Description");
                
                //第二次
                dataGridView1.DataSource = tbl;
    实际 添加两次 但是没绑定
      

  3.   

                DataTable tbl = new DataTable("Result");
                DataColumn dc = null;
                dc = tbl.Columns.Add("ID", Type.GetType("System.Int32"));
                dc.AutoIncrement = true;
                dc.AutoIncrementSeed = 1;
                dc.AutoIncrementStep = 1;
                dc.AllowDBNull = false;            dc = tbl.Columns.Add("Product", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Version", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Description", Type.GetType("System.String"));            DataRow row;
                row = tbl.NewRow();
                row["Product"] = "Knife";
                row["Version"] = "2.0";
                row["Description"] = "Prepare for fight!";
                tbl.Rows.Add(row);            dataGridView1.Columns.Add("Product", "Product");
                dataGridView1.Columns.Add("Version", "Version");
                dataGridView1.Columns.Add("Description", "Description");
                dataGridView1.DataSource = tbl;
                dataGridView1.databind();
      

  4.   

    你添加成功了。只是你重复了列,都跑后面去了,看不到。
    第二行是NewRow,用于输入。把 AllowUserToAddRows 设为 false 可以去掉NewRow
      

  5.   

    各位大哥,dataGridView好像不提供DataBind()方法吧?
      

  6.   

    我是在WinForm下做的,能有别的方法么?
      

  7.   

                DataTable tbl = new DataTable("Result");
                DataColumn dc = null;
                dc = tbl.Columns.Add("ID", Type.GetType("System.Int32"));
                dc.AutoIncrement = true;
                dc.AutoIncrementSeed = 1;
                dc.AutoIncrementStep = 1;
                dc.AllowDBNull = false;            dc = tbl.Columns.Add("Product", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Version", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Description", Type.GetType("System.String"));            DataRow row;
                row = tbl.NewRow();
                row["Product"] = "Knife";
                row["Version"] = "2.0";
                row["Description"] = "Prepare for fight!";
                tbl.Rows.Add(row);            //dataGridView1.Columns.Add("Product", "Product");
                //dataGridView1.Columns.Add("Version", "Version");
                //dataGridView1.Columns.Add("Description", "Description");
                 //这三句应该不需要,四楼说的那样,添加应该成功的,可能跑后面去了。就直接写DataGridView.datasource = Datatable就行            dataGridView1.DataSource = tbl;
    我最近一直在写这方面的问题,只要你的Datatable有值,只要最后一句的代码就必然能显示,还有一些关于显示的行名和列名的问题,需要的话可以再说。
    哎,我遇到的问题比你严重啊,我要显示的Datatable共有168行*53列,采用datasource的方法赋值,显示倒是没问题,就是很慢很慢啊……这样一个8000来个数据的表用DataGridView显示居然要7-8秒钟啊……?!
      

  8.   

    补充一句,你说的出现两行,DataGridView默认最后空出一行用于添加的,所以你的数据有n行,默认情况先就显示n+1行,最后一行是空的……!
      

  9.   


                DataTable tbl = new DataTable("Result");
                DataColumn dc = null;
                dc = tbl.Columns.Add("ID", Type.GetType("System.Int32"));
                dc.AutoIncrement = true;
                dc.AutoIncrementSeed = 1;
                dc.AutoIncrementStep = 1;
                dc.AllowDBNull = false;            dc = tbl.Columns.Add("Product", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Version", Type.GetType("System.String"));
                dc = tbl.Columns.Add("Description", Type.GetType("System.String"));            DataRow row;
                row = tbl.NewRow();
                row["Product"] = "Knife";
                row["Version"] = "2.0";
                row["Description"] = "Prepare for fight!";
                tbl.Rows.Add(row);            dataGridView1.Columns.Add("Product", "Product");
                dataGridView1.Columns.Add("Version", "Version");
                dataGridView1.Columns.Add("Description", "Description");            dataGridView1.Columns["Product"].DataPropertyName = "Product";
                dataGridView1.Columns["Version"].DataPropertyName = "Version";
                dataGridView1.Columns["Description"].DataPropertyName = "Description";            dataGridView1.AllowUserToAddRows = false;
                dataGridView1.AutoGenerateColumns = false;
                dataGridView1.DataSource = tbl;