Заказ объектов для базы данных Northwind Access
-
19-09-2019 - |
Вопрос
Мне нужно построить два объекта:список заказов и Заказ.
Используя эти два объекта, я должен заполнить DataGridView историей заказов.Однако мне дано указание не использовать источники привязки для подключения или другие элементы управления перетаскиванием.К сожалению, судя по данным Google, это самые популярные варианты решения проблем такого типа.
Кто-нибудь может указать мне правильное направление?У меня не так уж много опыта работы с C #.
Спасибо.
Решение
Вы могли бы создать Order
класс:
public class Order
{
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
}
Прочитайте записи вашей базы данных и загрузите вашу коллекцию заказов
List<Order> orders = new List<Order>();
using(SqlConnection cn = new SqlConnection("..."))
using (SqlCommand cm = cn.CreateCommand())
{
cn.Open();
cm.CommandText = "SELECT OrderId, OrderDate FROM Orders";
SqlDataReader dr = cm.ExecuteReader();
while (dr.Read())
{
orders.Add(new Order()
{
OrderId = dr.GetInt32(dr.GetOrdinal("OrderId")),
OrderDate = dr.GetDateTime(dr.GetOrdinal("OrderDate"))
});
}
}
Что касается части GridView, вам следует заглянуть в ASP.NET обзор привязки данных
Другие советы
На самом деле это довольно тривиальная проблема.Вам нужно будет использовать эти вещи:
- Адаптерданных (SQL, OleDB и т.д.)
- DataGridView (или сетка данных)
Как только у вас есть dataadapter и связанный с ним набор данных, вы можете просто выполнить цикл для заполнения сетки.
Вы можете выполнить привязку к любой коллекции данных, которая реализует IEnumerable, потому что когда вы вызываете функцию DataBind() в сетке, она выполняет итерацию по данным и привязывает сетку к свойству каждого объекта, хранящегося в коллекции, отражая (используя отражение) объект и ища свойство, которое соответствует полю данных, указанному для каждого связанного поля в сетке.