簡體   English   中英

C# DataGrid 未在 WinForm 中顯示數據

[英]C# DataGrid not showing Data in WinForm

我有一個我試圖填充的 DataGridView,如下所示:

List<pupil> listOfUsers = new List<pupil>(); // Create a new list 
listOfUsers = pupil.LoadPupilDetails(); // Populate the list with a list of all users 
dgvPupil.DataSource = listOfUsers;

該代碼適用於我的另一個項目,我遵循相同的過程,但它不會出現。 該列表確實從文本文件返回用戶。 我也斷了點,可以確認 dgvPupil.DataSource 顯示了這些數據,但它根本不會顯示在呈現的表單上。

最初,我在表單加載事件中有此代碼,但隨后我嘗試通過手動按鈕單擊事件應用它,但無濟於事。

我真的很感激這方面的一些幫助。

看看簡單的代碼示例是否有助於使用模擬數據。 需要的是查看您擁有的代碼,因為您當前的代碼並沒有真正提供足夠的細節。

注意 1我在設計器中為 DataGridView 創建了列,設置 header 文本和DataPropertyName以匹配Pupil class 中的每個屬性。

注 2學習使用BindingSource

我建議創建一個新表單,除了診斷當前問題所需的內容之外,沒有其他任何內容。

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace PupilsProject
{
    public partial class Form1 : Form
    {
        private readonly BindingSource _bindingSource = new BindingSource();
        public Form1()
        {
            InitializeComponent();

            dgvPupil.AutoGenerateColumns = false;
            _bindingSource.DataSource = Mocked.Pupils();
            dgvPupil.DataSource = _bindingSource;

            foreach (DataGridViewColumn column in dgvPupil.Columns)
            {
                Console.WriteLine(
                    $"{column.Name}, {column.DataPropertyName}, {column.DefaultCellStyle.Format}");
            }
        }
    }

    class Pupil
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime BirthDate { get; set; }
    }

    class Mocked
    {
        public static List<Pupil> Pupils() =>
            new List<Pupil>
            {
                new Pupil()
                {
                    FirstName = "Jim", 
                    LastName = "Adams", 
                    BirthDate = new DateTime(1990, 1, 2)
                },
                new Pupil()
                {
                    FirstName = "Mary", 
                    LastName = "Jones", 
                    BirthDate = new DateTime(1980, 11, 4)
                },
                new Pupil()
                {
                    FirstName = "Mile", 
                    LastName = "White", 
                    BirthDate = new DateTime(1970,10,9)
                }
            };
    }

}

每個 DataGridView 列的 Output

FirstNameColumn, FirstName, 
LastNameColumn, LastName, 
BirthDateColumn, BirthDate, d

抱歉耽擱了,非常感謝您提供幫助。

我通常使用封裝,但對於這個程序,我的目標是簡單並使用公共屬性。 所以我了解到我的 class 要求屬性具有 getter 和 setter,以便在運行時創建支持字段。 這使得數據可以突出到 DGV!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM