2016-09-06 6 views
0

パーツ番号のある部品の詳細についてSQLデータテーブルを編集できるWPFプログラムがあります。ユーザーは部品番号を入力し、テーブル・アダプターを使用して部品番号の詳細を行フィルターを使用してデータ・グリッドに表示します。 ObservableCollectionのリストを取得してデータグリッドの特定の列にバインドできるようにしたいとします(つまり、選択したリストのドロップダウンリストを使用してパーツタイプの列を作成します)。ここに私は.csです:SQLデータテーブルから取得するWPF DataGridにComboBoxを追加

public MainWindow() 
     { 
      createDropDowns(); 
      context = new RefreshAppContext();    
      InitializeComponent(); 
      PartTypeComboBox.ItemsSource = partTypesList; 
#if DEBUG 
#endif 
     } 

     public void findButton_Click(object sender, RoutedEventArgs e) 
     { 
      var partNumber = inputBox.Text; 
      // Searches for part number in db. 
      var foundPart = context.RefreshPartTypes.Where(x => x.PartNumber == partNumber).ToList(); 
      if (!foundPart.Any() == true) 
      { 
       MessageBox.Show("Part not found. Please try another number."); 
      } 
      else 
      { 
       // Adapter used to fill DT with info from DB based on query(ies). 
       adapter_PT.Fill(table_PT); 
       DataView dv = table_PT.DefaultView; 
       dv.RowFilter = "PartNumber='" + partNumber + "'"; 

       // Fills data grid in UI. 
       dg.DataContext = dv; 
       PartTypeComboBox.ItemsSource = table_LV.DefaultView; 
      } 
     } 
public void createDropDowns() 
     { 
      // Populate part styles from lookup table. 
      partTypesList = new ObservableCollection<string>(); 
      adapter_LV.Fill(table_LV); 
      List<string> temp = table_LV.AsEnumerable().Select(x => x[2].ToString()).ToList(); 
      foreach (var partType in temp) 
      { 
       partTypesList.Add(partType); 
      } 
      partTypesList.Add(""); // Add a blank option in case user needs to input blank cell. 
     } 

そして、ここでは私の.xamlです:

<DataGrid x:Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="True" AutoGeneratingColumn="m_grid_AutoGeneratingColumn" HorizontalAlignment="Left" Margin="28,-145,-779,0" VerticalAlignment="Top" Height="165" Width="1222" AlternatingRowBackground="LightGray" AlternationCount="2"> 
      <DataGrid.Columns> 
       <DataGridComboBoxColumn x:Name="PartTypeComboBox" 
             Header="PartTypeTest" 
             DisplayMemberPath="Key" 
             SelectedValuePath="Id" 
             SelectedValueBinding="{Binding PartType}"/> 
      </DataGrid.Columns> 
     </DataGrid> 

私はそれが情報の正確リストで新しいコンボボックス列を作成するために得ることができますが、私はそのコンボボックスを取得することはできません私のtable_PTデータテーブルから移入された私のPartType Columnを表示する(またはバインドする)?方向?ありがとう!

答えて

0

<DataGrid x:Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="True" AutoGeneratingColumn="event_AutoGeneratingColumn" HorizontalAlignment="Left" Margin="28,-145,-134,0" VerticalAlignment="Top" Height="165" Width="582" AlternatingRowBackground="LightGray" AlternationCount="2"> 
      <DataGrid.Columns> 
       <DataGridTemplateColumn x:Name="comboCol" Header="PartTypeTest" Width="150"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <ComboBox ItemsSource="{Binding partTypesList, RelativeSource={RelativeSource AncestorType=Window}}" 
             SelectedItem="{Binding PartType, UpdateSourceTrigger=PropertyChanged}"/> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
      </DataGrid.Columns> 
     </DataGrid> 
0

各項目の表示文字列プロパティへのパスを指定するDisplayMemberPathを配置する必要があります。解決

<DataGridComboBoxColumn x:Name="PartStylesComboBox" DisplayMemberPath="PartType " Header="Test" SelectedValuePath="{Binding partStylesList}" /> 
+0

その編集で、私はもはや私は、コンボボックスに付着した項目のリストを見ることはできません。それはちょうど私に空のドロップダウンボックスを与えます。それ以上のアドバイスは?ありがとう! –

+0

@KaylaNinhはそれらの値を表示していますか? – Sajeetharan

+0

残念ながらいいえ、値を表示していない –

関連する問題