C# WinFrom DataGridView绑定后不显示数据

qiu5610298 2010-12-15 04:47:44
DataTable table = new DataTable();
table = db.selectTable(DBName, TableName);
for (int a = 0; a < table.Columns.Count; a++)
{
dataGridView1.Columns[a].DataPropertyName = table.Columns[a].ColumnName.ToString();
dataGridView1.Columns[a].HeaderText = table.Columns[a].ColumnName.ToString();
dataGridView1.Columns[a].Visible = true;
}
dataGridView1.DataSource = table.DefaultView;
数据库中列名是中文。
在绑定数据后,dataGridView1中不显示数据,但是设置短点监视发现后数据,不知为何,求解答~
...全文
4895 78 打赏 收藏 转发到动态 举报
写回复
用AI写文章
78 条回复
切换为时间正序
请发表友善的回复…
发表回复
in2therain 2013-06-06
  • 打赏
  • 举报
回复
dgv.DataSource = ds; dgv.DataMember = ds.Tables[0].TableName; dgv.AutoGenerateColumns=true;
in2therain 2013-06-06
  • 打赏
  • 举报
回复
dgv.DataSource = ds; dgv.DataMember = ds.Tables[0].TableName; dgv.AutoGenerateColumns=true;[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/4.gif] [/img]
原子夸克 2013-05-13
  • 打赏
  • 举报
回复
我也遇到这种问题了,楼上各位所说的办法我都用过了,而且很相似的界面,一个可以显示,另一个绑定数据后就无法显示,但是单击datagridview还是可以选择到其中的数据的行的内容的,求大神解释…………
瑞大 2013-03-01
  • 打赏
  • 举报
回复
楼主肯定是之前制定了列集合,把columns属性里面的自己定义的列全部删掉就可以了
hunguitiantang 2012-08-10
  • 打赏
  • 举报
回复
我来揭秘,可能是一个很小的错误,楼主和大家都没注意到。

dataGridView1.DataSource 必须绑定DataTable

楼主可能绑定的是DataSet.绑定DataSet是不行的。。。必须指定 DataSet.Tables[0] 或者直接绑DataTable

这是粗心的错误.
yizhilideliliang 2012-08-08
  • 打赏
  • 举报
回复
楼主你好,你问了一个问题,那么多人都来回答你,而很多人也像你一样遇到了同样的问题,难道你就不能给大家分享一下吗好人?
jiangjing115 2012-08-02
  • 打赏
  • 举报
回复
刚问了就找到问题了,我是绑定的List<T>,T是自定义的一个类,我犯的错误很低级,把T中的字段列定义为了public的字段,——“要确保T中的字段列的定义为属性不能为实体定义,所谓属性就是set;get; 如果是实体也会导致数据绑定无法正常显示。”定义成属性就对了!
jiangjing115 2012-08-02
  • 打赏
  • 举报
回复
是怎么解决的呀?~ 我也遇到这个问题,连最简单的绑定个List<>也不能显示,是哪里设置不对吗?!
aamen111 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 67 楼 的回复:]

引用 66 楼 a8511007 的回复:

楼主不在吗,我加你qq了,好多话不方便多讲,不然楼上一堆高手要K你至死。。。

昨天有事情,一直没上网,K我至死,O MY GAD,不需要吧
[/Quote]

楼主最后怎么解决的
liyanwwww 2011-08-04
  • 打赏
  • 举报
回复
我也遇到类似问题了,不同的是我是直接dataGridView1.DataSource = ds.Tables["table1"];这么使用的。

我的程序出错的原因是由于在绑定之后我对ds进行了clear操作,即ds.Clear();注释掉这句以后程序就能够显示数据了。不知道我的错误能够给楼主一点点提示。
kowolle 2011-03-04
  • 打赏
  • 举报
回复
我也是菜鸟,我也遇到这个问题。楼主找到原因了吗?
qiu5610298 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 66 楼 a8511007 的回复:]

楼主不在吗,我加你qq了,好多话不方便多讲,不然楼上一堆高手要K你至死。。。
[/Quote]
昨天有事情,一直没上网,K我至死,O MY GAD,不需要吧
benyouyong 2010-12-16
  • 打赏
  • 举报
回复
dataGridView1.AutoGenerateColumns = false;
ijayleke 2010-12-16
  • 打赏
  • 举报
回复
后面加 dataGridView1.DataBind();
flowfog 2010-12-16
  • 打赏
  • 举报
回复
这问题太深奥了;在DATAGRIDVIEW里没有手动增加列,代码里也没有datagridview1.columns.add(xx)去动态增加列;下面的dataGridView1.Columns[a].DataPropertyName也不报索引超出集合大小的错;你的程序是有点与众不同;(在我们的程序里没有手动增加列或动态加列,下面代码是会报错的)
for (int a = 0; a < table.Columns.Count; a++)
{
dataGridView1.Columns[a].DataPropertyName = table.Columns[a].ColumnName.ToString();
dataGridView1.Columns[a].HeaderText = table.Columns[a].ColumnName.ToString();
dataGridView1.Columns[a].Visible = true;
}
qiu5610298 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 liuhong_0325 的回复:]

C# code

DataTable table = new DataTable();
table = db.selectTable(DBName, TableName);
if(table.Columns.Count>0)
{
dataGridView1.DataSource = table;
dataGridView1.AutoGenerateCo……
[/Quote]

不知道数据内容,如何知道列名
liuhong_0325 2010-12-16
  • 打赏
  • 举报
回复
为什么要用for循环啊?
liuhong_0325 2010-12-16
  • 打赏
  • 举报
回复

DataTable table = new DataTable();
table = db.selectTable(DBName, TableName);
if(table.Columns.Count>0)
{
dataGridView1.DataSource = table;
dataGridView1.AutoGenerateColumns = true;
dataGridView1.Columns[a].DataPropertyName = "ColumnName";//这个你应该知道是什么字段名称啊 直接填字段名称就好了吧!
dataGridView1.Columns[a].HeaderText = "ColumnName";
dataGridView1.Columns[a].Visible = true;
}

a8511007 2010-12-16
  • 打赏
  • 举报
回复
DataTable table = new DataTable();
table = db.selectTable(DBName, TableName);
dataGridView1.DataSource = table.DefaultView;
不设置列头,直接绑定数据源。。
flowfog 2010-12-16
  • 打赏
  • 举报
回复
你的真的有点特殊
加载更多回复(57)

110,538

社区成员

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

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

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