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

多年不寫 Winform 了,忽然要作一個 winform 項目,各類不順手,各類百度。async

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

數據綁定

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 被修改的實例。orm

阻止自動建立列

dgvEmployees.AutoGenerateColumns = false;

若是實例中有些列不想顯示,就須要阻止自動建立列。string

另外,當有 Link 等列時,若是設置此屬性,Link 列的 Index 會被排在 TextBox 列以前,致使 ColumnIndex 錯亂。it

自定義數據格式

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));
    }
}
相關文章
相關標籤/搜索