DataGridView无法显示数据库数据问题排查及解决
DataGridView无法显示数据库数据(调试可见数据但无报错)
我最近碰到个挺奇怪的问题:想从MySQL数据库拉数据填充DataGridView,调试的时候明明能看到数据已经成功加载到DataTable里了,代码也没抛出任何异常,但DataGridView就是一片空白,完全不展示内容。
我的初始代码是这样的:
using(MySqlConnection connection = new MySqlConnection(s_connectionstring) { command = connection.CreateCommand(); command.CommandText = "SELECT LIMET_RB.tabelle_räume.Raumnr, " + "LIMET_RB.tabelle_räume.Raumbezeichnung, " + "LIMET_RB.tabelle_räume.`Raumbereich Nutzer` " + "FROM LIMET_RB.tabelle_räume " + "WHERE(((LIMET_RB.tabelle_räume.tabelle_projekte_idTABELLE_Projekte) = " + s_whichID + "))" + "ORDER BY LIMET_RB.tabelle_räume.Raumnr;"; adap = new MySqlDataAdapter(command); ds = new DataSet(); adap.Fill(ds); dataTable = ds.Tables[0]; dataGridView1.DataSource = dataTable.DefaultView; label1.Text ="change Text" }
调试时能确认dataTable里确实有数据,也没有任何报错信息,但DataGridView就是不渲染内容。
解决方案
后来我把这段数据库查询和绑定的代码移到了菜单点击事件的处理方法里,DataGridView就正常显示数据了。虽然还没完全搞清楚原来的代码位置导致问题的具体原因,但这个调整确实解决了我的问题。
调整后的代码(顺便修正了原代码里的小语法问题)如下:
private void elementeabgleichToolStripMenuItem_Click(object sender, EventArgs e) { using(MySqlConnection connection = new MySqlConnection(s_connectionstring)) { command = connection.CreateCommand(); command.CommandText = "SELECT LIMET_RB.tabelle_räume.Raumnr, " + "LIMET_RB.tabelle_räume.Raumbezeichnung, " + "LIMET_RB.tabelle_räume.`Raumbereich Nutzer` " + "FROM LIMET_RB.tabelle_räume " + "WHERE(((LIMET_RB.tabelle_räume.tabelle_projekte_idTABELLE_Projekte) = " + s_whichID + "))" + "ORDER BY LIMET_RB.tabelle_räume.Raumnr;"; adap = new MySqlDataAdapter(command); ds = new DataSet(); adap.Fill(ds); dataTable = ds.Tables[0]; dataGridView1.DataSource = dataTable.DefaultView; label1.Text ="change Text"; } }
内容的提问来源于stack exchange,提问作者user6157196
相关产品推荐
相关产品推荐

