2016-09-06 7 views
0

У меня есть таблица с базы данных имени плата в SQL Server, имеющие три столбцов (ChargeName, Charge, тип). Вот снимок заселенной таблице ниже:CheckComboBox WPF Toolkit Extended

Snapshot

Я использую CheckComboBox Control Extended WPF Инструментов. Я хотел напечатать выбранные элементы из раскрывающегося списка.

Вот мой код XAML файл

<Window x:Class="RTS_Management.TestScreen" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit" 
    Title="TestScreen" Height="300" Width="300"> 
<Grid> 
    <StackPanel Orientation="Vertical"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Margin="5">Purpose: </TextBlock> 
      <xctk:CheckComboBox x:Name="_combo" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" 
         DisplayMemberPath="ChargeName" 
         ValueMemberPath="ChargeName" 

          /> 
      <Button Name="display" 
        Click="display_Click" 
        Margin="5"> 
       Display Selected 
      </Button> 
     </StackPanel> 

    </StackPanel> 
</Grid> 

И это код За Файл

using MessageBox = System.Windows.MessageBox; 

namespace RTS_Management 
{ 
    /// <summary> 
    /// Interaction logic for TestScreen.xaml 
    /// </summary> 
    public partial class TestScreen : Window 
    { 
     bool handle = true; 
     public TestScreen() 
     { 
      InitializeComponent(); 
      BindTreatmentComboBox(_combo); 
     } 

     // displaying data in ComboBox 
     public void BindTreatmentComboBox(CheckComboBox comboBoxName) 
     { 
      string ConString = ConfigurationManager.ConnectionStrings["RTS_ManagementModel"].ConnectionString; 
      string CmdString = string.Empty; 
      SqlConnection conn = new SqlConnection(ConString); 
      try 
      { 
       conn.Open(); 
       CmdString = "SELECT ChargeName " 
        + "FROM Charges "; 
       SqlDataAdapter da = new SqlDataAdapter(CmdString, conn); 
       DataSet ds = new DataSet(); 
       da.Fill(ds, "Charges"); 
       comboBoxName.ItemsSource = ds.Tables["Charges"].DefaultView; 
       //comboBoxName.ItemsSource = ds; 

      } 
      catch (Exception ex) 
      { 

       Xceed.Wpf.Toolkit.MessageBox msg = new Xceed.Wpf.Toolkit.MessageBox(); 
       msg.ShowMessageBox(ex.Message.ToString()); 
      } 
      finally 
      { 
       conn.Close(); 
      } 
     } 

     private void display_Click(object sender, RoutedEventArgs e) 
     { 
      MessageBox.Show(_combo.SelectedValue.ToString()); 
     } 
    } 
} 

Что мне не хватает? Ребята помогают мне, я не хорош в WPF.

ответ

0

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

XAML:

... 
<xctk:CheckComboBox x:Name="_combo" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      DisplayMemberPath="Key" 
      ValueMemberPath="Value" 
      ItemsSource="{Binding}" 
      /> 
... 

Код За:

... 
comboBoxName.ItemsSource = ds.Tables["Charges"] 
          .AsEnumerable() 
          .ToDictionary<DataRow, string, string>(
           r => r[0].ToString(), // Key 
           r => r[0].ToString() // Value 
          ); 
... 
0

У вас в Id столбец в вашей таблице? Если ваш ответ да, то попробуйте что-то вроде этого:

public void BindTreatmentComboBox(CheckComboBox comboBoxName) 
{ 
    ... 
    try 
    { 
     conn.Open(); 
     CmdString = "SELECT Id, ChargeName FROM Charges"; 
     SqlDataAdapter da = new SqlDataAdapter(CmdString, conn); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "Charges"); 

     var data = ds.Tables["Charges"].DefaultView; 

     comboBoxName.DisplayMemberPath = "ChargeName" 
     comboBoxName.ValueMemberPath = "Id" 
     comboBoxName.ItemsSource = data;  
    } 
    ... 
} 

Xaml:

<xctk:CheckComboBox x:Name="_combo" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center"/> 

также поставить break point на этой линии:

 comboBoxName.DisplayMemberPath = "ChargeName" 

и проверить значение переменной data. В нем должны быть ваши записи в таблице.

С другой стороны, я рекомендую вам следовать шаблону MVVM в вашем проекте.

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

  • Нет связанных вопросов^_^