2017-10-25 3 views
1

Ich schreibe ein einfaches wpf-Fenster, das sql-Daten an ListView-Tabellen bindet. Es ist einfacher, das auf Code zu erklären, so hier ist mein XAML:Werte mehrerer ausgewählter Spaltendaten aus ListView abrufen

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

Der Firmenname und company hinter in Code erfolgt Bindung:

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

Mein Ziel war es, Daten von bestimmten ausgewählten Spalten zu bekommen, und bisher habe ich noch so weit kommen:

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

mit Hilfe von mm8. Aber jetzt kann ich nur einen Wert aus einer ausgewählten Zeile erhalten. Was wäre, wenn ich alle ausgewählten Spalten durchlaufen möchte? Ich versuchte, listViewItem.SelectedItems als DataRowView zu verwenden, aber ich war nicht in der Lage, den Spaltennamen und die gegenwärtige Iterationsidentifikation zuzuweisen.

Antwort

1

Versuchen Sie folgendes:

foreach(var selectedItem in listViewItem.SelectedItems.OfType<DataRowView>()) 
{ 
    string name = selectedItem["CompanyName"].ToString(); 
} 
Verwandte Themen