c # - Datagridview viser ikke data

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg oprettede en Windows-applikation til visning af Gmail-samtaler i en datagrid. Alle er de ting, bortset fra datagridview bindende arbejder. Jeg ved ikke, hvad der skete i Binding til Gridview. Læs venligst min kodestykke og giv mig en løsning til at løse dette problem. Tak på forhånd .. Min kode er vedhæftet nedenfor ...


  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;


Og i designer side er dette koden til 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;


Jeg har også tilføjet denne kode på vores .CS-side


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

Bedste reference


Udover JonHs kommentar, vil jeg gerne påpege, at din kode ville læse bedre på denne måde:


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

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

Andre referencer 1


1) Kontrollér, at BindingSource ikke har en værdi for DataMember. DataMember-ejendommen fortæller BindingSource at finde et felt/ejendom med det pågældende navn for at få IEnumerable fra.


2) Sørg for at DataGridView.AutoGenerateColumns er True. Denne egenskab er True som standard og er ikke synlig på en PropertyGrid, så du ville have haft at sætte den falsk i din kode bag.


Opdateret


3) indeholder GMailItem offentlige ejendomme? Felter virker ikke.

Andre referencer 2


Hvis du ikke behøver opdatering via nettet, kan du gøre det:


dgMails.DataSource = lstMail; // Without the BindingSource


På MSDN-eksemplet binder de BindingSource til DataGrid før tilføjer data til BindingSource [7]