Datagridview не показывает данные - PullRequest
0 голосов
/ 07 апреля 2011

Я создал одно приложение Windows для отображения разговоров Gmail в сетке данных. Все элементы, кроме Datagridview, работают. Я не знаю, что произошло в Привязка к Gridview .. Пожалуйста, просмотрите мой фрагмент кода и дайте мне решение для решения этой проблемы. Заранее спасибо .. Мой код добавляется ниже ...

  GmailItem _gItem = null;
            List<GmailItem> lstMail = new List<GmailItem>();
            for (int i = 0; i < mailCount; i++)
            {
                _gItem = new GmailItem();
                _gItem = client.GetMailItem(i);
                lstMail.Add(_gItem);
            }

            _bindingMails.DataSource = lstMail;
            dgMails.DataSource = _bindingMails;

А на странице дизайнера это код для Datagridview

  this.dgMails.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        this.dgMails.Location = new System.Drawing.Point(6, 19);
        this.dgMails.Name = "dgMails";
        this.dgMails.Size = new System.Drawing.Size(504, 150);
        this.dgMails.TabIndex = 0;

Кроме того, я добавил этот код на нашей странице .CS

 dgMails.Dock = DockStyle.Fill;
            dgMails.AutoGenerateColumns = true;

Ответы [ 3 ]

5 голосов
/ 07 апреля 2011

1) Убедитесь, что BindingSource не имеет значения для DataMember. Свойство DataMember указывает BindingSource найти поле / свойство с этим именем, чтобы получить IEnumerable из.

2) Убедитесь, что DataGridView.AutoGenerateColumns Истина. Это свойство имеет значение True по умолчанию и не отображается в PropertyGrid, поэтому вам пришлось бы установить значение False в своем коде позади.

Обновлено

3) Содержит ли GMailItem общедоступные свойства? Поля не работают.

1 голос
/ 07 апреля 2011

Помимо комментария Джона, я хотел бы отметить, что ваш код читается лучше так:

        List<GmailItem> lstMail = new List<GmailItem>();
        for (int i = 0; i < mailCount; i++)
        {
            lstMail.Add(client.GetMailItem(i));
        }

        _bindingMails.DataSource = lstMail;
        dgMails.DataSource = _bindingMails;
0 голосов
/ 07 апреля 2011

Если вам не нужно обновлять через сетку, вы можете сделать:

dgMails.DataSource = lstMail; // Without the BindingSource

В примере MSDN они связывают BindingSource с DataGrid до добавление данных в BindingSource

...