下面的代码返回一个空的datagridview。 gridview的列标题是通过设计者添加的。我不想通过gridview编辑任何这些数据 - 只需显示它。 在dataAdapter.Fill(tblStats)的ShowGrid()方法中使用断点;声明,我已经确定数据表中填充了正确的数据。但是当表单出现时,除了列标题之外,gridview是空的。网格单元格是使用白色背景创建的(不是灰色,就像数据源为空),但值不存在。我错过了什么?提前谢谢。
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Net;
namespace WindowsFormsApplication1
{
public partial class StatViewer : Form
{
public StatViewer()
{
InitializeComponent();
}
private void StatViewer_Load(object sender, EventArgs e)
{
ShowGrid();
}
private void ShowGrid()
{
string dbConnStr = "Data Source=localhost;Initial Catalog=StatData;Persist Security Info=True;User ID=USERID;Password=PASSWORD";
SqlConnection dbConn = new SqlConnection(dbConnStr);
SqlCommand dbCmd = new SqlCommand();
dbCmd.CommandType = CommandType.Text;
dbCmd.CommandText = "SELECT * FROM Statistics";
dbCmd.Connection = dbConn;
dbConn.Open();
SqlDataAdapter dataAdapter = new SqlDataAdapter(dbCmd.CommandText, dbConn);
DataTable tblStats = new DataTable();
dataAdapter.Fill(tblStats);
dgvStats.DataSource = tblStats;
}
private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnDone_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
答案 0 :(得分:3)
如果将来有人发现这个问题,我发现了问题所在。
我最初使用可视化设计器来编辑datagridview中的列。设计器中有一个我省略的设置,称为DataPropertyName,它必须与数据库中的列具有相同的名称。使用设计器时,我只填写了名称属性,并且没有填写 DataPropertyName 。因此,即使代码是正确的,dgv也是空的。一旦填写完毕,它就能正常工作。