Home > Software engineering >  Data is not added well to ListView. (C# window form)
Data is not added well to ListView. (C# window form)

Time:05-18

I added 3 columns.

The modified attribute values are as follows.

  1. View - Details
  2. Onwer - True
  3. GirdLines - True
  4. FullRowSelect - True
namespace TestWinForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void add_Click(object sender, EventArgs e)
        {
            //listView1.BeginUpdate();
            string[] row = { "123", "456", "789" };
            ListViewItem list_view = new ListViewItem(row);
            listView1.Items.Add(list_view);
            textBox1.Text = listView1.Items.Count.ToString();
            //listView1.EndUpdate();
        }
    }
}

It is a code that updates the number of current rows to the textbox1 after adding a data row every time the add button is clicked.

Obviously, The number of rows keeps going up.... but the data is not output to listView1.

Which part should I check?

CodePudding user response:

Havent used Winforms in ages, but I remember that using a binding source was more reliable

var bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;
grid.DataSource = bindingSource;

//Add data to dataTable and then call

bindingSource.ResetBindings(false)  

CodePudding user response:

What you have should work in detail view with columns added. Here is an example

Design view

enter image description here

In this case a instance of the following class is used so later we can get information about a specific row.

public class Contact
{
    public int CustomerIdentifier { get; set; }
    public string CompanyName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string PhoneTypeDescription { get; set; }
    public string PhoneNumber { get; set; }
    public string CountryName { get; set; }
    public string[] ItemArray => new[]
    {
        CompanyName,
        FirstName,
        LastName,
        PhoneNumber,
        CountryName
    };
}

Code to do a mock add

private void AddRowButton_Click(object sender, EventArgs e)
{
    var companyName = "Just added";

    Contact contact = new Contact()
    {
        CompanyName = companyName,
        FirstName = "Karen",
        LastName = "Payne",
        PhoneNumber = "123-333-4444",
        CountryName = "USA"
    };

    ownerContactListView.Items.Add(
        new ListViewItem(contact.ItemArray)
        {
            Tag = contact.CustomerIdentifier
        });

    CountLabel.Text = $@"Row count: {ownerContactListView.Items.Count}";

    var index = ownerContactListView.Items.IndexOf(
        ownerContactListView.FindItemWithText(companyName));

    ownerContactListView.Items[index].Selected = true;
    ownerContactListView.EnsureVisible(index);
    ActiveControl = ownerContactListView;
}

After adding the row above (note I shorten the form so what you see is a partial view)

enter image description here

You can see the entire the initial load, see the following.

  • Related