Skip to main content

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.

Comments

Popular posts from this blog

WPF datagrid cell textbox change event

Entity/Class: public class FeesDetails : INotifyPropertyChanged { public int Id { get; set; } public string FeesName { get; set;} public string FeesDetailsName { get; set; } public int? PaidAmount { get; set; } public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(System.String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); } } public int feesAmount { get; set; } public int FeesAmount { get { return this.feesAmount; } set { if (value != this.feesAmount) { this.feesAmount = value; NotifyPropertyChanged("FeesAmount"); } } } } XAML: <DataGrid AutoGenerateColumns="False" Height="21

ASP.NET MVC razor SAP Crystal report

Crete a new project: Add a aspx Master Page Create a new folder Reports and 2 sub folder crystal & crystalviewer Now add a web form page in crystalviewer  folder. Add the master page namespace in your web form page. MasterPageFile ="~/Views/Shared/ReportSite.Master" Replace your web form by this code < asp : Content ID ="Content1" ContentPlaceHolderID ="ContentPlaceHolder1" runat ="server">      </ asp : Content > Now go to design mode of your web form drag & drop the crystal report viewer in your web form. After that your page will be look look like this. Replace the code: < CR : CrystalReportViewer ID ="EmployeeList" runat ="server"   HasCrystalLogo ="False"     AutoDataBind ="True"   Height ="50px"   EnableParameterPrompt ="false" EnableDatabaseLogonPrompt

C# run powershell script as administrator

Recently I was fetching a problem that I need to run a PowerShell script that will change TFS user Display name and SID. I was trying to run that script from C# that was not working due to TFS security update and TLS certificate. Using this code block I resolve the Issue. var newProcessInfo = new System.Diagnostics.ProcessStartInfo(); newProcessInfo.FileName = @"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"; newProcessInfo.Verb = "runas"; // Define Run as administrator newProcessInfo.Arguments = script; //Define your powershell script newProcessInfo.UseShellExecute = false; newProcessInfo.RedirectStandardOutput = true; // This will enable to read Powershell run output newProcessInfo.RedirectStandardError = true; Process proces = System.Diagnostics.Process.Start(newProcessInfo); proces.WaitForExit(); // I want to read the output string from powershell window StringBuilder output = new StringBuilder(); output.Append("Started"); while (!proces.St