请教,为什么dataGridView里不显示数据

Eleve 2009-04-13 09:16:38
一段代码如下,在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;

...全文
212 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleve 2009-04-14
  • 打赏
  • 举报
回复
问题解决,在VS2008下面新建了一个工程就有数据了,不知道为什么
boywangliang 2009-04-13
  • 打赏
  • 举报
回复
学习
  
解释多余的 2009-04-13
  • 打赏
  • 举报
回复
up
MiloSoft 2009-04-13
  • 打赏
  • 举报
回复

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;
Eleve 2009-04-13
  • 打赏
  • 举报
回复
理论上都是这样,但是实际操作起来确实遇到了问题啊,不然我也不会在这里发帖求助大家
Eleve 2009-04-13
  • 打赏
  • 举报
回复
大哥,你们运行一下再回答好吗,我按照你们的说话运行,如果去掉后面三行,连空行都没有了
zhuyc05 2009-04-13
  • 打赏
  • 举报
回复
补充一句,你说的出现两行,DataGridView默认最后空出一行用于添加的,所以你的数据有n行,默认情况先就显示n+1行,最后一行是空的……!
zhuyc05 2009-04-13
  • 打赏
  • 举报
回复
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秒钟啊……?!
Eleve 2009-04-13
  • 打赏
  • 举报
回复
我是在WinForm下做的,能有别的方法么?
Eleve 2009-04-13
  • 打赏
  • 举报
回复
各位大哥,dataGridView好像不提供DataBind()方法吧?
cja03 2009-04-13
  • 打赏
  • 举报
回复
你添加成功了。只是你重复了列,都跑后面去了,看不到。
第二行是NewRow,用于输入。把 AllowUserToAddRows 设为 false 可以去掉NewRow
hecong875 2009-04-13
  • 打赏
  • 举报
回复
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();

  • 打赏
  • 举报
回复

//第一次
dataGridView1.Columns.Add("Product", "Product");
dataGridView1.Columns.Add("Version", "Version");
dataGridView1.Columns.Add("Description", "Description");

//第二次
dataGridView1.DataSource = tbl;


实际 添加两次 但是没绑定
  • 打赏
  • 举报
回复

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();

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧