【C#】DataGridView 數據綁定的一些細節

多年不寫 Winform 了,突然要做一個 winform 項目,各種不順手,各種百度。

DataGridView 數據綁定的一些細節問題,記錄備查。

數據綁定

BindingList<EmployeeVO> dataSource;

private async void FrmEmployeeInfo_Load(object sender, System.EventArgs e)
{
    List<EmployeeVO> employees = await employeeApi.GetList();

    dataSource = new BindingList<EmployeeVO>(employees);

    dgvEmployees.DataSource = dataSource;
}

綁定數據後,添加刪除行,直接對 dataSource 進行 AddRemove 操作,界面會自動更新。更新數據,如果直接對 dataSource 中的元素屬性進行修改,界面不會刷新,需要點擊修改的元素,纔會刷新。要立即刷新,可以用一個新的實例替換掉 dataSource 被修改的實例。

阻止自動創建列

dgvEmployees.AutoGenerateColumns = false;

如果實例中有些列不想顯示,就需要阻止自動創建列。

另外,當有 Link 等列時,如果設置此屬性,Link 列的 Index 會被排在 TextBox 列之前,導致 ColumnIndex 錯亂。

自定義數據格式

private void dgvEmployees_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (dgvEmployees.Columns[e.ColumnIndex].HeaderText == "技能")
    {
        List<SkillVO> skills = e.Value as List<SkillVO>;

        e.Value = string.Join(", ", skills.Select(s => s.Name));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章