2012-01-30 120 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); 

然後,您可以像以前一樣添加您的標題和數據。