ListView and Inserting Subitems
-
Hello, How do you append/set subitem within a row? For example given this listview. 0 1 2 3 4 5 1 2 3 4 In row 2, I'd like to add "5" after the "4." Class ListView supports adding a new row via ListViewItem. How do you append a new subitem to an exist row? How do you set the entire row? Thanks, Kuphryn
-
Hello, How do you append/set subitem within a row? For example given this listview. 0 1 2 3 4 5 1 2 3 4 In row 2, I'd like to add "5" after the "4." Class ListView supports adding a new row via ListViewItem. How do you append a new subitem to an exist row? How do you set the entire row? Thanks, Kuphryn
Here is how I do what you are asking:
private System.Windows.Forms.ListView myList; //init ListView object private System.Windows.Forms.ColumnHeader ItemNameCol; //Column Header objects private System.Windows.Forms.ColumnHeader SubItem1Col; private System.Windows.Forms.ColumnHeader SubItem2Col; private System.Windows.Forms.ColumnHeader SubItem3Col; //give the headers some names ItemNameCol.Text = "Name"; SubItem1Col.Text = "Col1"; SubItem2Col.Text = "Col2"; SubItem3Col.Text = "Col3"; //create the columns to store the values using Column header objects this.myList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.ItemNameCol, this.SubItem1Col, this.SubItem2Col, this.SubItem3Col }); //create a item, with 3 subitems ListViewItem item1 = new ListViewItem("ItemName",0); item1.SubItems.Add( "SubItem1Value" ); item1.SubItems.Add( "SubItem2Value" ); item1.SubItems.Add( "SubItem3Value" ); myList.Items.AddRange(new ListViewItem[]{item1}); //add row to the listview
Thats how I create a new ListView. To append to a listview, I do the following:item1.SubItems.Add( "New Item Value" ); //insert a new subItem in the list ColumnHeader newHeader = new ColumnHeader(); //create a new header for new subitem newHeader.Text = "New Header"; //give it a name this.myList.Columns.Add(newHeader); //insert new header in list
I hope this helps out. The above code is quite crude, considering I wrote it pretty fast. Let me know if you have any questions about it. -
Here is how I do what you are asking:
private System.Windows.Forms.ListView myList; //init ListView object private System.Windows.Forms.ColumnHeader ItemNameCol; //Column Header objects private System.Windows.Forms.ColumnHeader SubItem1Col; private System.Windows.Forms.ColumnHeader SubItem2Col; private System.Windows.Forms.ColumnHeader SubItem3Col; //give the headers some names ItemNameCol.Text = "Name"; SubItem1Col.Text = "Col1"; SubItem2Col.Text = "Col2"; SubItem3Col.Text = "Col3"; //create the columns to store the values using Column header objects this.myList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.ItemNameCol, this.SubItem1Col, this.SubItem2Col, this.SubItem3Col }); //create a item, with 3 subitems ListViewItem item1 = new ListViewItem("ItemName",0); item1.SubItems.Add( "SubItem1Value" ); item1.SubItems.Add( "SubItem2Value" ); item1.SubItems.Add( "SubItem3Value" ); myList.Items.AddRange(new ListViewItem[]{item1}); //add row to the listview
Thats how I create a new ListView. To append to a listview, I do the following:item1.SubItems.Add( "New Item Value" ); //insert a new subItem in the list ColumnHeader newHeader = new ColumnHeader(); //create a new header for new subitem newHeader.Text = "New Header"; //give it a name this.myList.Columns.Add(newHeader); //insert new header in list
I hope this helps out. The above code is quite crude, considering I wrote it pretty fast. Let me know if you have any questions about it. -
Okay. Thanks. Your solution works great for inserting a new column to an existing list. I was thinking more in terms of inserting (setting) text to an existing column. 0 1 2 3 4 5 1 2 3 4 <-- insert text here. column already exists. Kuphryn
ListViewItem item = lstProducts.Items.Add("Column1");//<-first item.SubItems.Add("Column2"); item.SubItems.Add("Column3"); item.SubItems.Add("Column4"); item.SubItems.Add("Column5"); easy? ;P and if you want to update a previously created column listName.Items[index].SubItems[subIndex].Text = "";
-
ListViewItem item = lstProducts.Items.Add("Column1");//<-first item.SubItems.Add("Column2"); item.SubItems.Add("Column3"); item.SubItems.Add("Column4"); item.SubItems.Add("Column5"); easy? ;P and if you want to update a previously created column listName.Items[index].SubItems[subIndex].Text = "";