2016-04-19 46 views
1

WPF DataGridで選択したすべての行の最初の列( "値")の値を取得しようとしています。ここでWPF DataGridで複数の選択された行の値を取得

はXAMLです:

 <DataGrid x:Name="UPCs" 
        ItemsSource="{Binding Source={StaticResource SumsViewSource}}" 
        AutoGenerateColumns="False" 
        HeadersVisibility="Column" 
        IsReadOnly="True"> 
      <DataGrid.Columns> 
       <DataGridTextColumn x:Name="Value" 
            Binding="{Binding Value}" 
            Header="Item" 
            Width="3*" /> 
       <DataGridTextColumn x:Name="Qty" 
            Binding="{Binding Qty}" 
            Header="Qty" 
            Width="1*" /> 
      </DataGrid.Columns> 
     </DataGrid> 

私はすでに最初に選択された行から必要な値を取得する方法を考え出した:

Dim SelRow As String = DirectCast(UPCs.Columns.Item(0).GetCellContent(UPCs.SelectedValue), TextBlock).Text 

私はこれを採用する方法を見つけ出すことはできません複数行選択。

答えて

0

おかげで、ここで私がやったことだ:

For Each Row As DataRowView In UPCs.SelectedItems 
    If Row IsNot Nothing Then 
     Dim x As String = Row.Row("Value") 
     MessageBox.Show(x) 
    End If 
Next 

とクラスの上Imports System.Dataを追加しました。

最初の列(「値」)の値で選択された各行に対してダイアログが表示されます。

0

データグリッドに次のプロパティを追加します。

SelectionMode="Extended" SelectionUnit="FullRow" SelectedCellsChanged="UPCs_OnSelectedCellsChanged" 

そしてイベントハンドラ内で次の関数を対象として、送信者(データグリッド)を渡す、SelectedCellsChangedイベントハンドラを作成します。

Public Shared Function GetColumnCollection(sender As Object) As List(Of String) 

    Dim dataGrid As DataGrid = DirectCast(sender, DataGrid) 

    Dim selectedItems = dataGrid.SelectedItems 

    Return (From x As <<SumsViewSource type>> In selectedItems Select x.<<the property in SumsViewSource>>).ToList() 

End Function 

明らかにあなたが望むSumsViewSourceから実際のプロパティへのあなたのコレクションの種類と<>と> <を交換する(x.Value?)を持っています。また、関数の戻り値の型を必要なものに変更する必要があります(文字列のリストではありません)

これはあなたが正しいパスに置かれることを希望します。友人へ

+0

私は非常に新しいです。ネット、心が少し変わっていくのですか? –

+0

sumsViewSourceのタイプは?それがどんなタイプであっても、あなたが括弧で囲まれたものを完全に置き換える必要があるのです。括弧も必要です。 2番目のセットを「値」という単語に置き換えます。 –

+0

私が正しく理解していれば、正しい答えは "CollectionViewSource"ですか? –

関連する問題