2014-02-13 5 views
2

У меня есть два текстовых поля. Один из них - тип CustomerId, а другой - отображение имени клиента.Поиск при вводе текста в текстовом поле C#

То, что я хочу сделать, это: Я хочу, чтобы получить результат поиска в CustomerName текстовое поле в то время как я печатаю в CustomerId (получить соответствующую CUSTOMERNAME, связанные с CustomerId). Это не автозаполнение. Я хочу получить результат без нажатия ввода в текстовом поле или нажатия кнопки.

Каков наилучший способ для этого. Я использовал событие textbox_textchanged. Есть ли другой лучший способ сделать это? Я использую Entity Framework.

+0

Возможный дубликат [Найти как вы набираете C#] (http://stackoverflow.com/questions/1121431/find-as-you-type-in-c-sharp) – DaveInCaz

ответ

3

Вы можете использовать TextChanged event.Here пример:

if(txtCustomerId.Text.Length > 0) 
{ 
    int id; 
    if(int.TryParse(txtCustomerId.Text, out id)) 
    { 
     using (var ctx = new MyDbContext()) 
     { 
      // get customer name by Id, for example: 
      var name = ctx.Customers.Where(c => c.CustomerId == id) 
        .Select(c => c.CustomerName) 
        .FirstOrDefault(); 

      if (name != null) txtCustomerName.Text = name; 
     } 
    } 
} 
+1

Без * async/await *, * Задача/ПродолжениеWith * или различные альтернативы, как упомянуто в другом ответе, пользователь может иметь очень плохой интерфейс пользователя. Не применимо к реальной жизни. – EZI

3

Вы можете использовать textbox_textchanged событие однако, одна вещь, которую вы будете хотеть, чтобы рассмотреть, что для этой работы вы собираетесь чтобы вызвать запросы к базе данных при изменении значений текста. Выполнение этого при каждом нажатии клавиши будет излишним, поэтому вы захотите каким-то образом заглушить события. (Reactive extensions предлагает для этого отличную функциональность). После этого вам нужно будет использовать результаты вашего запроса Entity Framework для заполнения вашего текстового поля. Без каких-либо попыток сделать код из вас сложнее дать более конкретные рекомендации, но это то, как обычно реализуются функциональные возможности, о которых вы говорите.

Смежные вопросы