2012-01-30 95 views
1

出于某种原因,我无法获取任何项目以显示在ObjectListView中。 我创建了一个ObjectListView,将视图设置为“Details”并添加了三列,每列都有文本和标题。然后我用这个代码(尝试)添加项目:ObjectListView项目不可见?

List<string[]> list = new List<string[]>(); 
list.Add(new string[] { "col1", "col2", "col3" }); 
list.Add(new string[] { "col1", "col2", "col3" }); 

releases_ListView.AddObjects(list); 

当我尝试releases_ListView.Items.Count我得到“2”这样的项目被添加到收藏,但由于某种原因控件本身仍然是空的。我也玩过启用/禁用排序/分组,并使用Refresh()Update()但有任何结果...

没有人知道这一点吗?顺便说一句,这些项目肯定是添加的。当我选择第一行时,我会得到一个选择框,但没有可见的文本。

+0

你在使用哪个平台? WPF? Silverlight的?安慰? asp.net?的WinForms? (etc.) – 2012-01-30 20:35:55

+0

也许使用SetObjects – Joe 2012-01-30 20:39:31

+0

@ Muad'Dib我正在使用winforms(在visual c#express中)。 @Joe Tuskan是的,我尝试过'SetObjects',但它有相同的结果。 – Daan 2012-01-31 12:12:56

回答

0

我认为的事情是,你不能以的Detail状态添加项目。

你可以做到以下几点:

使用ListViewItem.SubItems属性广告“COL2”和“COL3,”至“COL1”

每个子项在链接你可以看到你如何能做到这一点的例子。

+0

它适用于'ListView',但不适用于'ObjectListView' ... – Daan 2012-01-31 12:14:05

2

这可能是过去时,它会有助于原始海报,但我有同样的问题,并发疯。

如果需要放置列的名称(用于构建列数据的对象的公共属性)不在NAME字段中,而不在TEXT字段中。我也可以看到ObjectListView控件中的数据行,尽管呈现的控件只是列标题和空白行。没有任何数量的无效,刷新或其他操作可以在呈现的表单上生成数据。

所以...发现,如果你通过IDE的Columns Collection Editor把这个名字在AspectName田野上Columns Collection,然后瞧....数据对照显示出来!可能有一种方法可以通过一个程序来完成,但我会把它留给下一个人,因为它现在正在做我所需要的。

0

也不太可能有帮助的OP,而是由另一篇文章对未来路人:

我已经找到了双手做这个程序是利用你的模型类的属性OLVColumn下最好的办法。

例如,采取以下类:

public class ModelClass 
{ 
    [OLVColumn(isVisible=false)] 
    public string Id {get;set;} 

    [OLVColumn()] 
    public string Name {get;set;} 

    [OLVColumn()] 
    public string Email {get;set;} 
} 

当列由形式/视图中使用的下面一行代码标有OLVColumn()属性的任何属性将被添加为列生成。

Generator.GenerateColumns(this.objectListView1,typeof(ModelClass)); 

您也可以使用此语句只生成可在类中的每个属性的列:

Generator.GenerateColumns(this.objectListView1, typeof(ModelClass), true); 

的OP的原始行为 - 有没有在ObjectListView显示当项目集合包含项目 - 是由于ObjectListView没有在设计时使用AspectName作为ToniMarieM所指定的任何列,或者如果使用生成器时未包含OLVColumn属性。如果使用第二个生成器示例并将false作为第三个参数传递,也会发生这种情况。

0

这是另一个警告。

如果您将ObjectListView动态添加到tabControl中的动态创建的选项卡,您会看到问题中解释的行为。

解决方案是选择新创建的选项卡,然后创建ObjectListView并将其添加到选项卡页面。

ctrlTabLogFiles.TabPages.Add(key, name); 
var tab = ctrlTabLogFiles.TabPages[key]; 
ctrlTabLogFiles.SelectedTab = tab; 
var gridCtrl = new GridWrapperControl(); 
tab.Controls.Add(gridCtrl); 

然后,您可以像以前一样添加您的标题和数据。