2015-03-05 4 views
0

У меня есть приложение winform, которое работает правильно, но я хочу выбрать имена столбцов, поэтому я создал новые столбцы.Я не хочу, чтобы мой datagridview автоматически генерировал числа

Когда я открываю приложение сейчас, у меня есть пустые созданные вручную столбцы, а затем автогенерированные столбцы, содержащие данные.

, так что я сделал:

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()); 
     } 
    } 

метод ДБО для получения данных:

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; 
    } 

редактировать:

enter image description here

это фотография. Мои данные не идет в мои колонки, он просто создает автогенерируемую столбцы

+1

возможный дубликат [Что такое NullReferenceException и как это исправить это?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – dotctor

+0

На какой строке вы указали упомянутое исключение? – Steve

+0

И, кстати, если ваша проблема заключается в том, как изменить заголовок каждого столбца, вы можете их изменить, используя 'dataGridView.Columns [index] .HeaderText =" Nome della colonna ";' – Steve

ответ

0

Может быть, я думаю, что существуют ошибки здесь:

contoSelezionato = listBox1.SelectedItem.ToString(); 

Не удается получить значение из списка.

Или здесь:

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); 
     } 

один или более элемент не содержит ничего значение.

+0

эти строки кода в порядке. программа отлично работает, пока я не выключу автоматически созданные столбцы. –

0

Это или изменить

col.DataPropertyName = "ID" 

по

col.DataPropertyName = "id" 

Movimenti класс имеет свойство "идентификатор", а не "ID"

Смежные вопросы