使用字符串搜索Listview子项

时间:2016-05-25 12:28:11

标签: c# winforms

我有一个包含数据库中所有来宾的Listview

        public FormGuestManagement()
    {
        InitializeComponent();

        listViewGuests.View = View.Details;
        listViewGuests.GridLines = true;
        listViewGuests.Scrollable = true;
        listViewGuests.FullRowSelect = true;
        listViewGuests.HideSelection = false;
        var guests = Repository.GetAllGuests();

        foreach (var guest in guests)
        {
            ListViewItem lvData = new ListViewItem(guest.AccountID.ToString());

            lvData.SubItems.Add(guest.Username);
            lvData.SubItems.Add(guest.Email);
            lvData.SubItems.Add(guest.FirstName);
            lvData.SubItems.Add(guest.LastName);
            lvData.SubItems.Add(guest.TelephoneNumber);
            lvData.SubItems.Add(guest.AddressLine1);
            lvData.SubItems.Add(guest.AddressLine2);
            lvData.SubItems.Add(guest.City);
            lvData.SubItems.Add(guest.State);
            lvData.SubItems.Add(guest.Postcode);
            lvData.SubItems.Add(guest.Country);

            listViewGuests.Items.Add(lvData);
        }
    }

如何使用字符串搜索单个列(在本例中为guest.Firstname),并且只显示列表视图中与字符串匹配的值(隐藏其他列)?

感谢您的时间!

2 个答案:

答案 0 :(得分:1)

ListView控件不提供您想要的功能。为了模拟您描述的内容,每次过滤条件发生变化时,您都必须重建所需的列表。

或者您可以像一位评论者所建议的那样使用更强大的内容,例如DataGridView。此控件提供真正的行/列行为,并采用可绑定的DataSource

答案 1 :(得分:0)

LINQ可以做到这一点,应该很容易:

combofavorite.Items.Add("Report Type: " + cmbreporttype.Text + " Date From: " + dateTimePicker1.Text + " To: " + dateTimePicker2.Text);
            combofavorite.SelectedIndex = 0;
            MessageBox.Show("Add Report Type: " + cmbreporttype.Text + " Date From: " + dateTimePicker1.Text + " To: " + dateTimePicker2.Text + " TO Favorite", "Added to Favorite", MessageBoxButtons.OK, MessageBoxIcon.Information);