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

mvc razor textboxfor change event change another textboxfor value

WPF Crystal Report Viewer Using SAP

ASP.NET MVC razor SAP Crystal report