2010-09-22 2 views
0

J'utilise WPF Grid. La première colonne est une colonne CheckBox et il y a un bouton de sauvegarde sur ma page. Lorsque le bouton est cliqué, j'aimerais que toutes les cases à cocher soient cochées, insérez un dans une datatable.récupère la ligne sélectionnée à partir de DataGrid

Comment cela peut-il être fait?

+0

peut vous fournir un code comme un exemple? –

Répondre

0

Quelque chose comme ceci vous aide?

Il utilise un modèle de décorateur pour envelopper une classe (qui provient probablement d'un ORM comme LINQ2SQL) pour vous permettre de numériser une valeur "sélectionnée". Vous pouvez ensuite enregistrer en recherchant les articles sélectionnés dans la liste des articles décorés et n'enregistrer que ceux-là.

(Exemple simple, non conforme à MVVM)

XAML:

<Window x:Class="CheckTest.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=Foos}" Name="gridFoos" Margin="0,0,0,34"> 
      <DataGrid.Columns> 
       <DataGridCheckBoxColumn Header="Selected" Binding="{Binding Path=Selected}"/> 
       <DataGridTextColumn Header="Name" Binding="{Binding Path=Value.Name}" /> 
       <DataGridTextColumn Header="Age" Binding="{Binding Path=Value.Age}"/> 
      </DataGrid.Columns> 
     </DataGrid> 
     <Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="423,283,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="btnSave_Click" /> 
    </Grid> 
</Window> 

code derrière:

namespace CheckTest 
{ 
    public partial class MainWindow : Window 
    { 
     public ObservableCollection<SelectedDecorator<Foo>> Foos { get; set; } 
     public MainWindow() 
     { 
      var bars = new List<Foo>() { new Foo() { Name = "Bob", Age = 29 }, new Foo() { Name = "Anne", Age = 49 } }; 
      var selectableBars = bars.Select(_ => new SelectedDecorator<Foo>(_)).ToList(); 
      Foos = new ObservableCollection<SelectedDecorator<Foo>>(selectableBars); 
      InitializeComponent(); 
      DataContext = this; 
     } 

     private void btnSave_Click(object sender, RoutedEventArgs e) 
     { 
      var saveThese = Foos.ToList().Where(_ => _.Selected).Select(_=> _.Value); 
      //db.BulkUpdate(saveThese); ... or some sutch; 
     } 
    } 
    public class Foo 
    { 
     public string Name{get;set;} 
     public int Age { get; set; } 
    } 
    public class SelectedDecorator<T> 
    { 
     public T Value { get; set; } 
     public bool Selected { get; set; } 
     public SelectedDecorator(T value) 
     { 
      Selected = false; 
      this.Value = value; 
     } 
    } 
} 
Questions connexes