Как связать ComboBox с DataTable - PullRequest
12 голосов
/ 01 мая 2010

У меня есть DataTable со следующими столбцами:

id, Имя, Описание, ParentId

и хотел бы создать элемент управления WPF (.NET 4.0 framework), который реализует комбинированный список, отображающий имена, связанные со значениями id. Поэтому, когда пользователь выбирает имя, отображаемое в выпадающем списке, логика позади должна получить его значение идентификатора.

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

Ответы [ 4 ]

28 голосов
/ 09 мая 2010

Вроде так:

В вашем файле XAML введите:

 <ComboBox x:Name="myComboBox" DisplayMemberPath="Name" SelectedValuePath="id" />

В коде вставьте:

myComboBox.ItemsSource = myTable;

(myTable - ссылка на упомянутую вами таблицу)

Затем вы можете получить идентификатор выбранного в данный момент человека в поле со списком, используя выражение:

NameComboBox.SelectedValue
1 голос
/ 09 сентября 2016

MVVM шаблонное решение

XAML:

<ComboBox 
   x:Name="myComboBox" 
   DisplayMemberPath="Name"
   SelectedValuePath="id"
   ItemsSource="{Binding myDataTable}"      
   SelectedValue="{Binding theID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
>

«Имя» и «id» - это столбцы в myDataTable.

Код:

private MyViewModel _myViewModel = new MyViewModel();
this.DataContext = _myViewModel;

MyViewModel class

public DataTable myDataTable { get; set; }
public short theID { get; set; }

Выбранное значение (строка) в столбце «id» получает присвоение «theID».

0 голосов
/ 13 августа 2017

Мой XAML:

 <ComboBox  Margin="10,0,0,0" x:Name="listStatus" 
HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="200" SelectionChanged="listStatus_SelectionChanged" 
    DisplayMemberPath="Status" SelectedValuePath="StatusID" />

Код позади:

private void Bind_StatusList()
{
  Service1 serv = new Service1();
  dtStatus = serv.GetStatuses(); // a WCF service getting the DataTable from a view from the database.
  listStatus.ItemsSource = dtStatus.DefaultView;
}

Это не дает выбранной опции при запуске окна, но, по крайней мере, список Status отображается, когда я нажимаю comboBox.

0 голосов
/ 12 ноября 2015
    private void InitCountry()
    {
        BasicData basicData = new DAL.BasicData();
        DataTable CountryListDT = basicData.GetCountryList();
        txtCountry.SelectedIndex = 0;
        txtCountry.ItemsSource = CountryListDT.DefaultView;
    }

    private void txtCountry_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        BasicData basicData = new DAL.BasicData();
        object obj = (object)e.AddedItems;
        Int32 CountId = (Int32)txtCountry.SelectedValue;
        InitProvince(CountId);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...