创建动态对象列表视图
本文关键字:视图 列表 对象 动态 创建 | 更新日期: 2023-09-27 18:32:11
我会用列和行填充 ObjectListView,但我的简单程序崩溃而没有错误。怎么了?我的指定目标是从具有未知架构的数据库创建 ListView。为什么我不知道列名称,我需要动态创建方面获取器。我已经尝试过ObjectListView,但我未能向ListView添加一行。
编辑:(愚蠢的代码已删除)我已经解决了我的问题,感谢您对 AllColumns 和 RebuildColumns() 的提示
foreach (TTablecolumn c in table.Columns) {
// Spalte zum Zeigen der aktuellen Werte einfügen ...
col = new OLVColumn(c.Columnname + " (ALT)", "value");
col.AspectGetter = delegate(object x) { return ((XmlStuff.Row)x).getColumnByName(c.Columnname).Value; };
col.IsEditable = false;
lv.AllColumns.Add(col);
// Spalte zum Zeigen des neuen Wertes
col = new OLVColumn(c.Columnname, "newvalue");
col.AspectGetter = delegate(object x) { return ((XmlStuff.Row)x).getColumnByName(c.Columnname).NewValue; };
col.IsEditable = true;
lv.AllColumns.Add(col);
createViewField(c);
}
lv.RebuildColumns();
在如何编写ObjectListView方面,现有文档给出了一些答案:
- 根据常见问题解答中提供的信息添加列
- 不要添加
OLVListItems
,如入门指南中所述。
因此,您将需要这样的东西:
lv.AllColumns.Add(col1);
lv.AllColumns.Add(col2);
lv.RebuildColumns();
var list = new List<Model>();
for (int i = 1; i <= 10; i++)
list.Add(new Model());
lv.SetObjects(list);
但是,代码中的任何内容都不会导致程序硬崩溃。您将不得不在其他地方寻找崩溃的来源。