2013-07-30 2 views
0

У меня есть окно списка данных, привязанных к файлу accdb и отображающее содержимое одного столбца, и связанный с ним файл DataBindingSource также был отфильтрован - это работает отлично (но может повлиять на то, что Я собираюсь спросить).Извлечь значение из источника данных Listbox

Я хотел бы знать, как вытащить значение из выбранной записи, например, полной записи. В окне списка в настоящее время отображается фамилия - это все, что вы можете видеть, как я могу вытащить имя пользователя, которое не отображается, но существует в источнике данных?

Это код использовал заселить окно списка:

public frmCustomer(string Input) 
    { 
     InitializeComponent(); 
     this.customersTableAdapter.Fill(this.dSSystem.Customers); 
     this.catsTableAdapter.Fill(this.dSSystem.Cats); 

     // Display Customer Record 
     int lvRecIdx = customersBindingSource.Find("AccRef", Input); 
     customersBindingSource.Position = lvRecIdx; 

     // Fetch Cats Owned 
     catsBindingSource.Filter = ("CustRef = '" + Input + "'"); 
    } 

Спасибо

+0

Просьба также указать нам код и обязательно прикрепите тег для WPF/Asp.NET/WinForms, чтобы вы получили правильный ответ. –

+0

вам следует выбрать 2 столбца из источника данных в этом случае для доступа к базе данных. Вы также должны выбрать «первичный ключ» таблицы. –

+0

@FabianBigler У меня в настоящее время нет кода для показа, так как я не уверен, как бы я ссылался на другое поле внутри этой записи, я добавил код, используемый для заполнения списка, если это поможет. – MrDKOz

ответ

1

ListBox содержит двух членов: ValueMember и DisplayMember.

Вы можете определить простой объект, который вы заполняете из вашей базы данных запроса:

public class SomeItem 
{ 
     public int Key { get; set; } 
     public string DisplayText { get; set; } 
     public string Column1 { get; set; } 
     public string Column2 { get; set; } 
     ...etc... 
} 

Ваша реализация может выглядеть следующим образом (некоторый макет данные):

var items = new List<SomeItem>(); 
    var item = new SomeItem(); 
    item.Key ="key1"; 
    item.DisplayText = "value1"; 
    item.Column1 = "col1"; 
    item.Column2 = "col2"; 
    items.Add(item); 
    listBox1.DataSource = items; 
    listBox1.DisplayMember = "DisplayText"; //User will see your DisplayText 
    listBox1.ValueMember = "Key"; //The key which is unique and your Primary Key on your database 

Затем на основе вы выбрали, вы можете запросить свои товары и получить товар:

var key = (int)listBox1.SelectedValue; 
    foreach (var existingItem in items) 
    { 
      if (existingItem.Key == key) 
      { 
       //woohoo got it! 
       Debug.Print(existingItem.Column1) 
       Debug.Print(existingItem.Column2) 
      } 
    } 
+0

Сортировка. Большое спасибо! – MrDKOz

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