2014-01-22 2 views
0

У меня есть таблица в моей базе данных, хранящаяся в SQL Server 2012, и через эту таблицу я повторяю и добавляю новый объект в список привязки. Этот список затем устанавливается как источник данных для моего DataGridView.DataGridView связанный со списком привязки отображает пустые строки

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

Это метод я использую для создания набора данных и заполнения связывания список

public void selectCars() 
{ 
    string connString = @"Data Source=POHJOLA\SQLEXPRESS;Initial Catalog=BlueCars;Integrated Security=True"; 

    using (SqlConnection connection = new SqlConnection(connString)) 
    { 
     connection.Open(); 
     string query = "SELECT * FROM Car ORDER BY CarID ASC"; 
     SqlCommand command = new SqlCommand(query, connection); 

     using (SqlDataAdapter adapter = new SqlDataAdapter(command)) 
     using (DataSet result = new DataSet()) 
     { 
      adapter.Fill(result); 

      foreach (DataRow row in result.Tables[0].Rows) 
      { 
       carsList.Add(new Car(Convert.ToInt32(row[0]), row[1].ToString(), row[2].ToString(), row[3].ToString(), Convert.ToDecimal(row[4]),Convert.ToInt32(row[5]),row[6].ToString(),row[7].ToString())); 
      } 
     } 
    } 
} 

Это моя инициализация

public managerCarForm() 
{ 
    InitializeComponent(); 
    selectCars(); 
    carsGrid.DataSource = carsList; 
} 

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

Я здесь не получаю никаких исключений или ошибок.

Большое спасибо!

+0

ли вы когда-либо получить разрешение на это? У меня также есть DataGridView, который читает мой DataSource (точки останова подтверждают наличие данных), он правильно создает столбцы и правильное количество строк, но все они пустые. Интересно, узнали ли вы почему. Mine - это Windows Form, поэтому нет оператора DataBinding(). – Tanoshimi

ответ

0
   foreach (DataRow row in result.Tables[0].Rows) 
        { 
         carsList.Add(new Car(Convert.ToInt32(row[0]), row[1].ToString(), row[2].ToString(), row[3].ToString(), Convert.ToDecimal(row[4]),Convert.ToInt32(row[5]),row[6].ToString(),row[7].ToString())); 
        } 

Просьба проверить ваш список автомобилей, применяя точку останова после цикла foreach, чтобы убедиться, что она содержит хотя бы одну строку данных. А также проверьте свой запрос.

Если ваше приложение является ASP.NET попытаться изменить ваш код, как показано ниже ..

public managerCarForm() 
{ 
    InitializeComponent(); 
    selectCars(); 
    carsGrid.DataSource = carsList; 
    carsGrid.Databind(); 

} 
+0

Да, у меня две строки в таблице и две записи в моем списке привязки. – Mythago

+0

, если это форма ASP.NET. carsGrid.DataSource = carsList; Добавить эту строку в строку выше carsGrid.Databind(); – tarzanbappa

+0

это Windows Forms - Databind() не в моем контексте – Mythago

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