2017-10-25 7 views
1

SQLデータをListViewテーブルにバインドする単純なwpfウィンドウを作成しています。それはので、ここで、コードにこれを説明する方が簡単です私のXAMLです:複数の選択された列データの値をListViewから取得する

<ListView Name="listViewItem" ClipToBounds="True" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" SizeChanged="ListView_SizeChanged" Loaded="ListView_Loaded" TextOptions.TextHintingMode="Animated" Margin="0,0,83,0"> 
    <ListView.View> 
     <GridView AllowsColumnReorder="False"> 
      <GridViewColumn Header="Company Name" Width="150"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding CompanyName}" TextWrapping="Wrap" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn Header="Company Address" Width="350"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding CompanyAddress}" TextWrapping="Wrap" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

COMPANYNAMEとCompanyAddressは結合が背後にあるコードで行われます。

private void ListView_Loaded(object sender, RoutedEventArgs e) 
{ 
    string connectionString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString; 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     SqlCommand command = new SqlCommand("SELECT CompanyName, CompanyAddress FROM Groups", connection); 
     SqlDataAdapter adapter = new SqlDataAdapter(command); 
     DataTable dt = new DataTable("Groups"); 
     adapter.Fill(dt); 
     listViewItem.ItemsSource = dt.DefaultView; 
    } 
} 

私の目標は、特定の選択した列からデータを取得することでした、今まで私はこれに来ました:

var selectedItem = listViewItem.SelectedItem as DataRowView; 
if(selectedItem != null) 
{ 
    string name = selectedItem["CompanyName"].ToString(); 
    ... 
} 

mm8の助けを借りて。しかし、今では、これは1つの選択された行から1つの値を取得することしかできません。選択したすべての列を繰り返し処理したい場合はどうすればよいですか? listViewItem.SelectedItemsDataRowViewとしてみましたが、列名と現在の繰り返しIDの両方を割り当てることができませんでした。

答えて

1

これを試してみてください:

foreach(var selectedItem in listViewItem.SelectedItems.OfType<DataRowView>()) 
{ 
    string name = selectedItem["CompanyName"].ToString(); 
} 
関連する問題