отобразить элемент с несколькими значениями из списка в текстовое поле, используя базу данных доступа - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь отобразить значения элемента в соответствующем текстовом поле, когда элемент выбран в списке

, вот как я его настроил:

  1. ЭтоВот как значения отображаются в окне списка

            command.CommandText = "select * from ItemsList";
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                EditItemBrowserBox.Items.Add(reader["ID"].ToString() + "         " + reader["ItemBrand"].ToString() + "  " + reader["ItemName"].ToString() + "  " + reader["ItemType"].ToString() + "  " + reader["ItemPrice"].ToString());   
            }
    
  2. Так я пытаюсь сделать так, чтобы значения из списка отображались в текстовом поле

            command.CommandText = "select * from ItemsList where ItemName='" + EditItemBrowserBox.Text + "' ";
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                EditIDTB.Text = reader["ID"].ToString();
                ItemNameAddTB.Text = reader["ItemName"].ToString();
                ItemTypeAddTB.Text = reader["ItemType"].ToString();
                ItemBrandAddTB.Text = reader["ItemBrand"].ToString();
                ItemPriceAddTB.Text = reader["ItemPrice"].ToString();
            }
    

EditItemBrowserBox - это список, и EditIDTB.Text = reader["ID"].ToString(); - это я пытаюсь показать значение в одном из текстовых полей.

Прямо сейчас, когда я нажимаю на элемент, в текстовых полях ничего не отображается,Любая помощь приветствуется

1 Ответ

0 голосов
/ 07 февраля 2019

Существуют более эффективные способы выполнения ваших действий, поэтому вы можете воспользоваться DisplayMember и ValueMember, но проблема, с которой вы сталкиваетесь, связана с использованием всего поля Text, которое вы отображаетепользователю.

Если их выбор выглядел так:

001     Acme  Anvil  Weapon  10.00

Тогда ваш запрос в итоге будет:

select * from ItemsList where ItemName='001     Acme  Anvil  Weapon  10.00'

Просто разделите часть, которую выЗаинтересованы в:

var itemName =
    EditItemBrowserBox.Text.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries)[2];

command.CommandText = $"select * from ItemsList where ItemName='{itemName}'";

Чтобы обойти проблемы с именами элементов, которые имеют несколько пробелов, вы можете выбрать вместо этого на основе идентификатора:

var id = EditItemBrowserBox.Text.Split(' ')[0];

command.CommandText = $"select * from ItemsList where ID='{id}'";

Возможно, вы также захотите проверитьв параметризации ваших запросов, но это другая проблема ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...