Google style Searching in WPF

Hi,
       In your WPF application you can use search style like as google. Like the images when you are type in a Textbox  for search.


and your matching data will load in Employee list:


this can be done on Textchange event. hare i use textbox for type, listbox for load type matches data & the Listview for displaying the final data.

Text Change Event:


   private void searchEmployeeCodeTextBox_TextChanged(object sender, TextChangedEventArgs e)  
     {  
       employesLstView.Items.Clear();  
       if (searchEmployeeCodeTextBox.Text != "")  
       {  
         empObj.EmployeeCode = searchEmployeeCodeTextBox.Text.Trim();  
         List<EEmployeeInfo> employeeInfos = new List<EEmployeeInfo>();  
         employeeInfos = bEmployeeObj.listshowEmployeeCodeWise(empObj);  
         if (employeeInfos.Count > 0)  
         {  
           if (employeeInfos.Count != 1)  
           {  
             employeeCodeListBox.Visibility = Visibility.Visible;  
             foreach (var obj in employeeInfos)  
             {  
               employeeCodeListBox.Items.Add(obj.EmployeeCode + "(" + obj.EmployeeName + ")");  
             }  
           }  
           else  
           {  
             GetSingleEmployeeInfo();  
             employeeCodeListBox.Visibility = Visibility.Hidden;  
           }  
         }  
         else  
         {  
           employeeCodeListBox.Visibility = Visibility.Hidden;  
         }  
       }  
       else  
       {  
         PopulateEmployeeList();  
         employeeCodeListBox.Visibility = Visibility.Hidden;  
       }  
     }  

Implement GetSingleEmployee() Method

     private void GetSingleEmployeeInfo()  
     {  
       List<EEmployeeInfo> employeeInfosList = new List<EEmployeeInfo>();  
       try  
       {  
         empObj.EmployeeCode = searchEmployeeCodeTextBox.Text.Trim();  
         employeeInfosList = (List<EEmployeeInfo>)bEmployeeObj.GetSelectedEmployeesCodeInfo(empObj);  
       }  
       catch (Exception ex)  
       {  
        MessageBox.Show(ex.Message, "Single Employee Info.", MessageBoxButton.OK, MessageBoxImage.Information);  
       }  
       if (employeeInfosList.Count > 0)  
       {  
         foreach (EEmployeeInfo employeeInfo in employeeInfosList)  
         {  
           employesLstView.Items.Add(employeeInfo);  
         }  
       }  
     }  

Listbox Event 1

   private void employeeCodeListBox_PreviewKeyDown(object sender, KeyEventArgs e)  
     {  
       if (employeeCodeListBox.SelectedIndex == 0 && e.Key == Key.Up)  
       {  
         searchEmployeeCodeTextBox.Focus();  
       }  
       if (employeeCodeListBox.SelectedIndex > -1)  
       {  
         if (e.Key == Key.Enter)  
         {  
           string[] id = (employeeCodeListBox.SelectedItem.ToString()).Split('(');  
           searchEmployeeCodeTextBox.Text = id[0];  
         }  
       }  
     }  

Listbox Event

   private void employeeCodeListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)  
     {  
       if (employeeCodeListBox.SelectedIndex > -1)  
       {  
         string[] id = (employeeCodeListBox.SelectedItem.ToString()).Split('(');  
         searchEmployeeCodeTextBox.Text = id[0];  
       }  
     }  

Listbox Event 3

  private void searchEmployeeCodeTextBox_PreviewKeyUp(object sender, KeyEventArgs e)  
     {  
       if(employeeCodeListBox.Items.Count>0 && e.Key==Key.Down)  
       {  
         employeeCodeListBox.Focus();  
       }  
     }  

Listbox xaml

  <ListBox Height="100" HorizontalAlignment="Left" Margin="180,61,0,0" Name="employeeCodeListBox" VerticalAlignment="Top" Width="218" PreviewKeyDown="employeeCodeListBox_PreviewKeyDown" MouseDoubleClick="employeeCodeListBox_MouseDoubleClick" />  



Two Global Class

  private BEmployeeInfo bEmployeeObj = new BEmployeeInfo();  
     private EEmployeeInfo empObj = new EEmployeeInfo();  

Employee Class

   public class EEmployeeInfo  
   {  
     public long EmployeeId { get; set; }  
     public string EmployeeCode { get; set; }  
     public string EmployeeName { get; set; }  
     public DateTime DateOfBirth { get; set; }  
     public string PresentAddress { get; set; }  
     public string PermanentAddress { get; set; }  
     public string Email { get; set; }  
     public string Phone { get; set; }  
     public string Mobile { get; set; }  
     public byte[] Photo { get; set; }  
     public byte[] CV { get; set; }  
     public string DepartmentName { set; get; }  
     public string DesignationName { set; get; }  
     public string Location { get; set; }  
     public string SuperiourName { get; set; }  
    }  



For any query please write your comment.

Popular posts from this blog

WPF Crystal Report Viewer Using SAP

ASP.NET MVC razor SAP Crystal report