创建动态对象列表视图

本文关键字:视图 列表 对象 动态 创建 | 更新日期: 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);

但是,代码中的任何内容都不会导致程序硬崩溃。您将不得不在其他地方寻找崩溃的来源。