listview上的搜索功能

时间:2010-04-21 09:58:20

标签: c#

我现在正在改变这个问题!

我使用以下内容进行搜索:

//check the array for a match
        foreach (Delivery d in mainForm.myDeliveries)
        {
            if (d.DeliveryName == searchValue)
            {
                ListViewItem item = lstDeliveryDetails.Items.Add(d.DeliveryName);
                item.SubItems.Add(d.DeliveryAddress);
                item.SubItems.Add(d.DeliveryDay);
                item.SubItems.Add(d.DeliveryTime);
                item.SubItems.Add(d.DeliveryMeal);
                item.SubItems.Add(d.DeliveryInstructions);
                item.SubItems.Add(d.DeliveryStatus);

            }
        }

我的问题是,现在搜索所有其他值,进行完整搜索的最佳方法是什么? 我知道我可以做其他的陈述,并通过地址,日期,时间等。

有没有更好的方法来实现这一目标? 此刻,用户必须输入整个名称才能获得结果,如果他们只输入名称的一部分,我可以制作吗?

2 个答案:

答案 0 :(得分:0)

清除列表视图中的所有项目,只添加符合搜索条件的项目:

lstDeliveryDetails.Clear();
for (int i = 0; i < myDeliveries.Count; i++)
{
    Delivery d = (Delivery)mainForm.myDeliveries[i];

    if (d.DeliveryName == searchValue)
         lstDeliveryDetails.Items.Add(d.DeliveryName);
}

答案 1 :(得分:0)

更改您的显示方法,使其接受像此一样的传递列表参数(或数组)

private void displayDeliveries(List<Delivery> deliveries)

并相应地更改其定义

在你的btnSearch中获取List中选定的交付列表并传递给displayDeliveries方法

初始化listView时,将mainForm.myDeliveries作为参数发送

<强>更新

从用户处获取关键字并按此检查

if (d.DeliveryName.Contains(searchValue))

如果列表很小,您还可以通过处理textbox的TextChanged事件来尝试增量搜索。