2010-04-21 63 views
0

我現在正在改變這個問題!listview上的搜索功能

我已經搜索工作使用下列內容:

//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); 

      } 
     } 

我的問題是,什麼是現在要查找所有其他價值的最好方式,做一個完整的搜索? 我知道我可以做,如果其他語句,並通過地址,日期,時間等

有沒有更好的辦法來實現這一目標? 而目前,用戶必須輸入整個名稱才能得到結果,如果他們只輸入名稱的一部分,我可以嗎?

回答

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); 
} 
+0

名稱'item'在當前上下文中不存在 – sark9012 2010-04-21 10:13:54

+0

@Luke將其更改爲lstDeliveryDetails.Items.Add(d.DeliveryName);同樣你也要添加你的子項目。 – Amsakanna 2010-04-21 10:16:53

+0

哈哈,我意識到我的方式錯誤,然後看到你寫的東西!出於某種原因,它不會在列表視圖中返回任何內容:( – sark9012 2010-04-21 10:22:45

0

這樣

更改您的顯示方式,使得它接受發送列表參數(或陣列)
private void displayDeliveries(List<Delivery> deliveries) 

,並改變其定義相應

在你btnSearch獲得列表中選擇分娩的列表,並傳遞到displayDeliveries方法

雖然初始化你的ListView發送mainForm.myDeliveries作爲參數

更新

從用戶那裏得到的關鍵字,並檢查這樣

if (d.DeliveryName.Contains(searchValue)) 

您也可以嘗試通過漸進式搜索處理文本框的TextChanged事件,如果列表很小。