2014-02-06 45 views
1

我有一個listview其中列動態創建取決於可用主題的數量。當我創建新的ListViewItem時,它會自動向listview添加空白subitem。由於這些列是動態創建的,因此子項目會被移位。這是我做到的。防止列表視圖添加空白子項

foreach(int id in stud) 
{ 
ListViewItem gtb = new ListViewItem(); 
foreach(int sname in subj) 
{ 
    gtb.SubItems.Add(value1); 
    gtb.SubItems.Add(value2); 
    gtb.SubItems.Add(value3); 
} 
gtb.SubItems.Add(value4); 
listView1.Items.AddRange(new ListViewItem[] { gtb }); 
} 

我知道加入value1ListViewItem(value1)可以解決這個問題,但我還有一個subitem這是foreach loop之外。我怎樣才能解決這個問題?

enter image description here

+0

嘗試使用[this](http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace(v = vs.110).aspx)。例如:如果(value2!= null),則添加。 – spajce

+0

值不爲null保留讓我修改問題 –

+0

發生的是SubItem [0]實際上是父級ListViewItem,因爲您沒有填充它,它是空的。 –

回答

0

添加一個「如果」語句,將檢查每個值的長度那麼如果長度大於零添加的項目「GTB」。

+0

它不是我想要過濾的空值。它是在每個listviewitem上添加的空白子項。 –

0

創建String[],用它來收集您的子項,然後創建一個使用一個新的ListViewItem

String[] subItems = new String[subj.Count + 1]; //add however many extras you need in place of 1 
for (int j = 0; j < subj.Count; j++) 
    subItems[j] = subj[j]; 
//add whatever else to the array you want... 
listView1.Items.Add(new ListViewItem(subItems)); 
0

我嘗試手動添加具有0寬度的新列,它工作得很好。

+2

在這種情況下,「作品」僅僅意味着隱藏。最好添加一個合適的項目,而不是破解顯示器。稍後當您嘗試引用子項目時,您將爲此付款,但必須始終記住忽略它。 – DonBoitnott