我有一个winform应用程序,它可以正常工作,但我想选择列名,所以我创建了新列。
当我立即打开应用程序时,我有空白的手动生成的列,然后是包含数据的自动生成的列。
所以我做了:
dataGridView1.AutoGenerateColumns = false;
(在Form1加载时)
然后:
List<Movimenti> source = dbo.RecuperaMovimenti(contoSelezionato);
dataGridView1.DataSource = source;
但是我收到了错误:
对象引用未设置为对象的实例。
我发布了一些可以帮助您找到问题的代码:
当我从列表框中选择一个项目时,我希望datagridview加载所选用户的数据:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
DboInfo dbo = new DboInfo();
try
{
contoSelezionato = listBox1.SelectedItem.ToString();
}
catch
{}
lblConto.Text = contoSelezionato;
lblConto.Visible = true;
lblTotale.Text = totale;
lblTotale.Visible = true;
try
{
List<Movimenti> source = dbo.RecuperaMovimenti(contoSelezionato);
dataGridView1.DataSource = source;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
获取数据的dbo方法:
public List<Movimenti> RecuperaMovimenti(string contoSelezionato)
{
List<Movimenti> risultato = new List<Movimenti>();
SQLiteConnection m_dbConnection = new SQLiteConnection();
try
{
m_dbConnection = OpenConnection();
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
SQLiteDataReader rdr;
string sql = "SELECT id_movimento, data_movimento, descrizione_movimento, importo_movimento FROM movimenti WHERE nome_conto = '"+contoSelezionato+"'";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
rdr = command.ExecuteReader();
while (rdr.Read())
{
Movimenti MOV = new Movimenti();
MOV.id = (Int64)rdr["id_movimento"];
//MOV.nome_conto = (string)rdr["nome_conto"];
MOV.data = (string)rdr["data_movimento"];
MOV.descrizione = (string)rdr["descrizione_movimento"];
MOV.importo = Convert.ToInt32(rdr["importo_movimento"]);
risultato.Add(MOV);
}
rdr.Close();
m_dbConnection.Close();
return risultato;
}
编辑:
那是一张照片。我的数据不会进入我的列,它只是创建自动生成的列
答案 0 :(得分:0)
可能是,我认为这里存在错误:
contoSelezionato = listBox1.SelectedItem.ToString();
无法从listBox获取值。
或者在这里:
while (rdr.Read())
{
Movimenti MOV = new Movimenti();
MOV.id = (Int64)rdr["id_movimento"];
//MOV.nome_conto = (string)rdr["nome_conto"];
MOV.data = (string)rdr["data_movimento"];
MOV.descrizione = (string)rdr["descrizione_movimento"];
MOV.importo = Convert.ToInt32(rdr["importo_movimento"]);
risultato.Add(MOV);
}
一个或多个项目不包含任何值。
答案 1 :(得分:0)
这个或改变
col.DataPropertyName = "ID"
通过
col.DataPropertyName = "id"
Movimenti班有&#34; id&#34;财产,不是&#34; ID&#34;