我有一个 gridControl,其数据源是一个列表。 列表中的每个项目都由三个字段组成。 我的 gridControl 中有 3 列。 当我以编程方式将值插入 GridView 时,它不会出现。 这是我的代码。
public Company_Selection()
{
InitializeComponent();
companies = new List<DataLibrary.Companies>();
gridControl1.DataSource = companies;
}
internal void load_all_companies(List<DataLibrary.Companies> other)
{
for (int i = 0; i < other.Count; i++)
{
companies.Add(other[i]);
gridView1.SetRowCellValue( i, "Id", other[i].id);
gridView1.SetRowCellValue( i, "Company", other[i].name);
gridView1.SetRowCellValue(i, "Description", other[i].description);
gridView1.RefreshData();
gridControl1.RefreshDataSource();
}
}
有什么问题的想法吗?
最佳答案
问题是你不应该直接使用细胞。您的“公司”列表应包含在 BindingList 中。所有编程更改都是在对象级别而不是网格级别完成的。所以,设置数据源就变成了
gridControl1.DataSource = new BindingList<DataLibrary.Companies>(companies);
这将处理列表中对象的呈现、更改、添加和删除。如果您的 gridView 不包含任何列并且 AutoPopulateColumns 为 true,则将自动创建列。您可能想使用设计器在 gridView 中设置列。不要忘记将 Field 属性设置为基础对象的属性名称。
关于c# - 未绑定(bind)的网格控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466933/