Проблема создания данных с помощью кода и привязки к сетке данных - PullRequest
0 голосов
/ 27 июля 2010

Я пытаюсь привязать свою таблицу данных инвентаризации к представителю таблицы данных. Проблема в коде заключается в том, что при компиляции он говорит, что столбец «make» не принадлежит таблице, но я делаю столбец в коде следующим образом.:

public partial class Form1 : Form
    {
        List<Car> listCars = new List<Car>();
        DataTable inventorytable=new DataTable();
        public Form1()
        {
            InitializeComponent();
            listCars.Add(new Car("Chucky", "BMW", "Green"));
            listCars.Add(new Car("Tiny", "Yugo", "White"));
            listCars.Add(new Car("Ami", "Jeep", "Tan"));
            listCars.Add(new Car("Pain Inducer", "Caravan", "Pink"));
            listCars.Add(new Car("Fred", "BMW", "Pea Soup Green"));
            listCars.Add(new Car("Sidd", "BMW", "Black"));
            listCars.Add(new Car("Mel", "Firebird", "Red"));
            listCars.Add(new Car("Sarah", "Colt", "Black"));
            createdatatable();
        }
        void createdatatable()//create data table schema
        {
            DataColumn carmake = new DataColumn("make", typeof(string));
            DataColumn carcolor = new DataColumn("color", typeof(string));
            DataColumn carpetname = new DataColumn("petname", typeof(string));
            foreach (Car c in listCars)
            {
                DataRow dr = inventorytable.NewRow();
                **dr["make"] = c.carMake;**//column 'make' does not belong to the table.
                dr["color"] = c.carColor;
                dr["petname"] = c.carPetName;
                inventorytable.Rows.Add(dr);
            }
            dataGridView1.DataSource = inventorytable;//binds data table to the grid view

        }

    }
}

Я также добавил в эту форму класс с именем car, код которого следующий:

class Car
    {
        public string carPetName { get; set; }
        public string carMake { get; set; }
        public string carColor { get; set; }
        public Car(string petname, string make, string color)
        {
            carPetName = petname;
            carMake = make;
            carColor = color;
        }

, пожалуйста, помогите !!!!!!!!PS (я написал оператор как

DataTable inventorytable=new DataTable();

, потому что, когда я писал его как DataTable inventorytable, он выдавал исключение как «защита объекта не установлена ​​для экземпляра объекта».)

Ответы [ 3 ]

0 голосов
/ 27 июля 2010

Вам необходимо сделать следующее:

DataColumn carmake = new DataColumn("make", typeof(string)); 
DataColumn carcolor = new DataColumn("color", typeof(string)); 
DataColumn carpetname = new DataColumn("petname", typeof(string));

// Your missing this part:
inventorytable.Columns.Add(carmake);
inventorytable.Columns.Add(carcolor);
inventorytable.Columns.Add(carpetname);

Вы забыли добавить столбцы в таблицу, поэтому при создании строки в ней нет столбцов, и ваш код не может найти имя столбца.

0 голосов
/ 27 июля 2010

Вы создаете столбцы, но не добавляете их в таблицу.Итак, вам нужно добавить код, упомянутый "Kelsey".

========================================================Не забывайте отмечать ответ, если вы находите его правильным.Это побудит сообщество ответить на ваши вопросы.

0 голосов
/ 27 июля 2010

Похоже, что вы пропустили добавление столбцов, которые вы создали динамически, к вашей таблице данных.В функции createdatatable вам нужно

inventorytable.Columns.Add(carmake)

после строки

`DataColumn carmake = new DataColumn("make", typeof(string));`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...