我在tabcontrol中有一个包含多个datagridviews的应用程序。 其中一个tabcontrols有4列由数据源填充。 我不使用autogenerate列,而是使用DataPropertyName将值绑定到列。
我创建了2列,在分配DataSource后手动填充。
此datagridview中的值是来自应用程序中其他位置的datagridview的过滤值。
当我过滤时,然后转到包含datagridview的选项卡,手动列为空。 更改过滤器(但不是结果)会填充这些列。
如何获取手动填充的列以始终显示其值?
在datagridview上调用Refresh()或Update()并不能解决我的问题
我的代码的简短版本: 我实际上使用的是继承自DataGridView
的类//fill datagridview
PcbLink[] links = Service.Instance.Client.queryPcbLinks();
List<Pcb> pcbs = new List<Pcb>();
foreach (PcbLink link in links)
{
PcbFilter pcbfilter = new PcbFilter();
pcbfilter.pcb_id = link.pcb_id;
Pcb[] res = Service.Instance.Client.queryPcbs(pcbfilter);
pcbs.Add(res[0]);//only first element because pcb_id should always be unique -> only one row
}
cdgvUsage.SetData(pcbs);//setData is used as cdgvUsage.DataSource = pcbs, but does some stuff internally
for (int i = 0; i < links.Length; i++)
{
SortableBindingList<Pcb> dataSource = cdgvUsage.GetData<Pcb>();
cdgvUsage["count", i].Value = links[i].count;
char variantchar = (char)('a' + (char)(dataSource[0].variant));
cdgvUsage.Columns["variant"].ValueType = typeof(string);
cdgvUsage["variant", i].Value = variantchar.ToString();
}
答案 0 :(得分:0)
我相信在将DataSource指向dataGridView后,更改必须保存在数据源中,否则它们不会反映在dataGridView中(因为每次执行Refresh()或Update()时它都会从数据源中获取数据。)
确保手动填充的值存储在dataSource中。