Как добавить данные в DataGridView - PullRequest
6 голосов
/ 13 октября 2010

У меня есть структура вроде

 X={ID="1", Name="XX",
    ID="2", Name="YY" };

Как вывести эти данные в DataGridView из двух столбцов

Сетка выглядит как

ID | Name

Можем ли мы использовать LINQ для этого. Я новичок в DataGridView Просьба помочь мне сделать это ..

Заранее спасибо

Ответы [ 5 ]

21 голосов
/ 13 октября 2010

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

this.dataGridView1.Rows.Add("1", "XX");
3 голосов
/ 17 октября 2010

Предположим, у вас есть такой класс:

public class Staff
{
    public int ID { get; set; }
    public string Name { get; set; }
}

И предположим, что вы перетащили DataGridView в вашу форму и назовите ее dataGridView1.

Вам необходим BindingSource для хранения ваших данных, чтобы связать ваши DataGridView. Вот как вы можете это сделать:

private void frmDGV_Load(object sender, EventArgs e)
{
    //dummy data
    List<Staff> lstStaff = new List<Staff>();
    lstStaff.Add(new Staff()
    {
        ID = 1,
        Name = "XX"
    });
    lstStaff.Add(new Staff()
    {
        ID = 2,
        Name = "YY"
    });

    //use binding source to hold dummy data
    BindingSource binding = new BindingSource();
    binding.DataSource = lstStaff;

    //bind datagridview to binding source
    dataGridView1.DataSource = binding;
}
2 голосов
/ 13 октября 2010

Мой любимый способ сделать это с помощью функции расширения под названием «Карта»:

public static void Map<T>(this IEnumerable<T> source, Action<T> func)
{
    foreach (T i in source)
        func(i);
}

Затем вы можете добавить все строки следующим образом:

X.Map(item => this.dataGridView1.Rows.Add(item.ID, item.Name));
0 голосов
/ 13 октября 2010

Вы должны сделать это, как ваш код

DataGridView.DataSource = yourlist;

DataGridView.DataBind ();

0 голосов
/ 13 октября 2010

LINQ является языком «запроса» (то есть Q), поэтому изменение данных выходит за его рамки.

Тем не менее, ваш DataGridView предположительно связан с ItemsSource, возможно, типа ObservableCollection<T> или аналогичный.В этом случае просто сделайте что-то вроде X.ToList().ForEach(yourGridSource.Add) (это может быть адаптировано в зависимости от типа источника в вашей сетке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...