DataGrid改變數據源後,沒有數據。 我用DataGrid顯示我查詢的資料,將其邦定到一個DataSet,但當我的DataSet中的表結構改變後,DataGrid中就只能顯示我上一次表的字段,沒有數據,但我查詢的DataSet中确實有資料,我用過DataGrid.Refresh()和DataGrid.Invalidate()都不能解決問題。(我是在WindowFrom) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的datagrid是在可视化中编辑列的吧如果是的话,你绑定的dataset结构改变后,你的datagrid用到原dataset的那些列是否在新的dataset中也存在,如果不存在了,那肯定不行。你不要用datagrid的可视化来编辑datagrid列,用自动增长列就应该没问题。但用自动增长列的话,列的显示表头就是你数据库对应的列名称了 是否创建了tablestyle,如果是的话,把它删除了。 我的表結構是根據我下的SELECT 的SQL語句而變化的。 这个问题不用问了,没解决方法,从.Net2002到2005,全是这个效果前几天也有人问了同样的一个问题,也没好的解决方法(最后是销毁这个DataSet然后重建)这个问题的主要原因不在DataSet上,如果你在网格出错的情况下去检查DataSet的数据的话,会发现,DataSet的数据不存在任何问题,和你想要的结果一模一样,那一绑到DataGrid,看到的就是想回事了,感觉,就像一个突然死去的人活灵活现的出现在你的身边,而你去检查DataSet的数据时,你不得不相信这个Grid是鬼,活生生的鬼,我估计是绑定管理器的BUG,但找了找可操纵的方法属性什么的,到现在为止无解 可以试试看这样(Winform VS2005)public void BindGrid() { string connString = ConfigurationManager.AppSettings["connectionstring"]; SqlConnection conn = new SqlConnection(connString); conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = str; //str,sqlstatement. SqlDataAdapter da = new SqlDataAdapter(cmd); //关键是这里,不能重复填充为同一个表名 da.Fill(ds, TableName); datagridview1.DataSource = ds; //同理,不能使用同一个表名,否则会出现残留列 datagridview1.DataMember = TableName; conn.Close(); conn.Dispose(); da.Dispose(); }我总结下来是这样一回事,就是多次填充Dataset不能使用同一个表名,同样不能使用相同的表名,否则会出现前一次绑定的残留列.我也是初学者,有错误,请多指教. 問題已解決,可能是jointan() 說的DataSet問題,我每次都新建一個DataSet,把上一次的DataSet.Dispose()就可以了。 可能是你邦定的DataSet和你查询得到的DataSet不是同一个对象!仔细检查下! label中如何绑定dropdownlist 局部刷新失败 求一则正则表达式 关于GOOGLE MAP 嵌入C#应用程序的问题 C#调用C++写的dll的问题,也许对熟悉的人很简单,但是这个问题我查了很多资料也没解决 flashget那样的悬浮框是怎么做的?(求源码) 关于datarow 事件操作 判断界面是否存在的问题 新手提问。。。。。。。。 怎样向文本文件中输入一个回车? 分段读文件问题,总是超过范围,请指教 新建项目自动生成的文件的作用
但用自动增长列的话,列的显示表头就是你数据库对应的列名称了
前几天也有人问了同样的一个问题,也没好的解决方法(最后是销毁这个DataSet然后重建)
这个问题的主要原因不在DataSet上,如果你在网格出错的情况下去检查DataSet的数据的话,会发现,DataSet的数据不存在任何问题,和你想要的结果一模一样,那一绑到DataGrid,看到的就是想回事了,感觉,就像一个突然死去的人活灵活现的出现在你的身边,而你去检查DataSet的数据时,你不得不相信这个Grid是鬼,活生生的鬼,我估计是绑定管理器的BUG,但找了找可操纵的方法属性什么的,到现在为止无解
public void BindGrid()
{
string connString = ConfigurationManager.AppSettings["connectionstring"];
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = str; //str,sqlstatement.
SqlDataAdapter da = new SqlDataAdapter(cmd);
//关键是这里,不能重复填充为同一个表名
da.Fill(ds, TableName);
datagridview1.DataSource = ds;
//同理,不能使用同一个表名,否则会出现残留列
datagridview1.DataMember = TableName;
conn.Close();
conn.Dispose();
da.Dispose();
}
我总结下来是这样一回事,就是多次填充Dataset不能使用同一个表名,同样不能使用相同的表名,否则会出现前一次绑定的残留列.
我也是初学者,有错误,请多指教.