2016-09-06 3 views
0

Ich habe eine Datenbanktabelle namens Kosten in SQL Server mit drei Spalten (ChargeName, Ladung, Typ). Hier ist die Momentaufnahme der bevölkerten Tabelle unten:CheckComboBox WPF Toolkit Erweiterte

Snapshot

Ich bin mit erweiterten WPF Toolkit CheckComboBox Kontrolle. Ich wollte die ausgewählten Artikel aus dem Dropdown-Menü drucken.

Hier ist meine XAML-Code-Datei

<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> 

Und das ist die Code hinter Datei

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()); 
     } 
    } 
} 

Was mir fehlt? Leute helfen mir, dass ich nicht gut in WPF bin.

Antwort

0

den Datensatz mit einem Wörterbuch in dem Durch die Umwandlung von Code-behind, ich bin in der Lage die ausgewählten Werte zu sehen, ist die Pop-up-Meldung mit dem folgende Code-Updates:

XAML:

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

Code:

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

Sie haben eine Id Spalte in der Tabelle? Wenn Ihre Antwort ja ist dann so etwas wie dies versuchen:

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"/> 

setzen sich auch in dieser Zeile ein break point:

 comboBoxName.DisplayMemberPath = "ChargeName" 

und überprüfen Wert von data variabel. Sie sollten Ihre Tabellensätze darin enthalten.

Auf der anderen Seite empfehle ich Ihnen, MVVM Muster in Ihrem Projekt zu folgen.

Verwandte Themen