Как показать данные в DataGridView в C# - PullRequest
1 голос
/ 03 марта 2020

У меня есть этот класс. Я хочу взять данные из базы данных (она работает). Сделайте переменную p из класса person с данными из базы данных и покажите ее в dataGridView (это не работает).

public class person {
    public int id { get; set; }
    public string fname { get; set; }
    public string sname { get; set; }
    public string lname { get; set; }
    public string address { get; set; }
    public string username { get; set; }
    public string pass1 { get; set; }
    public string pass2 { get; set; }
    public string email { get; set; }

    public person(int id, string fname, string sname, string lname, string address, string username, string pass1, string pass2, string email)
    {
        this.id = id;
        this.fname = fname;
        this.sname = sname;
        this.lname = lname;
        this.address = address;
        this.username = username;
        this.pass1 = pass1;
        this.pass2 = pass2;
        this.email = email;
    }
}

Я читаю данные из базы данных и задаю их в переменной p;

if (reader.HasRows)
{
    reader.Read();
    id = reader.GetInt32(0);
    fname = reader.GetString(1);
    sname = reader.GetString(2);
    lname = reader.GetString(3);
    address = reader.GetString(4);
    username = reader.GetString(5);
    pass1 = reader.GetString(6);
    pass2 = reader.GetString(7);
    email = reader.GetString(8);
    MessageBox.Show("Username found!");
    // Call Close when done reading.
    reader.Close();
    person p = new person(id, fname, sname, lname, address, username, pass1, pass2, email);
    dataGridView1.DataSource = p;
}

, но данные не отображаются в dataGridView.

1 Ответ

2 голосов
/ 03 марта 2020

Из Документы Microsoft :

Класс DataGridView поддерживает стандартную модель привязки данных Windows Forms. Это означает, что источник данных может быть любого типа, который реализует один из следующих интерфейсов:

Интерфейс IList , включая одномерные массивы.

Интерфейс IListSource , такой как классы DataTable и DataSet.

Интерфейс IBindingList , такой как класс BindingList.

IBindingListView интерфейс, такой как класс BindingSource.

Вы можете попробовать передать список людей вместо одного человека в DataGridView:

var persons = new List<person>() {
    new person(id, fname, sname, lname, address, username, pass1, pass2, email)
};
var bindingList = new BindingList<Person>(list);
var source = new BindingSource(bindingList, null);
dataGridView1.DataSource = source;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...