@balikus

Как связать данные из списка с DataGridView с помощью bindingSource.DataSource?

Знакомлюсь с C#. Есть на мой взгляд довольно толковые youtube уроки от Defazze по принципам программирования на C# и в 15-м споткнулся в таком коде-автор не отзывается:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Reflection;
using Microsoft.SqlServer.Server;

namespace Tree3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent(); 

            List<Person> people=new List<Person>
            {
                new Person()
                {
                    Familia="Ивановский",
                    Imia="Иван",
                    Pater="Иваныч",
                    Bday=new DateTime(1980,12,1)
                },

                new Person()
                {
                    Familia="Иванов",
                    Imia="Иван",
                    Pater="Иваныч",
                    Bday=new DateTime(1981,10,18)
                }
            };

            bindingSource1.DataSource=people;
        }
    }
}


У меня программа с классом Person и соответствующими свойствами компилируется, но в результате выходит таблица с пустыми строками по длине списка. А вот такие строки выводят на консоль следующее: Console.WriteLine(people[0].Familia); -> Ивановский... Console.WriteLine(bindingSource1.DataSource); -> System.Collections.Generic.List`1[Tree3.Person] ...У автора, разумеется, всё выводится нормально. Как нужно было написать класс Person, чтобы список отображался в таблице. Ведь скорее всего ошибка кроется в этом классе. У меня это:

using System;

namespace Tree3
{
    public class Person
    {
        public DateTime Bday { get; set; }
        public string Familia { get; set; }
        public string Imia { get; set; }
        public string Pater { get; set; }
    }
}
  • Вопрос задан
  • 9300 просмотров
Решения вопроса 1
@balikus Автор вопроса
Всё дело в том, что нужно было не перетаскивать новый bindingSource1 с панели инструментов на форму и пытаться его связать, а непосредственно в DataGrid задать источником данных класс (в представленном меню - объект) Person, что автоматически создаст personBindingSource и свяжет грид с объектом. Затем можно отредактировать заголовки столбцов с заданных по умолчанию.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Sumor
С классом и привязкой всё нормально. У вас ошибка в описании отображения в DataGridView. Поэтому нужен Xaml для определения вашей ошибки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы