[英]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.