2010-09-22 4 views
0

Я использую WPF Grid. Первый столбец - столбец CheckBox, и на моей странице есть одна кнопка сохранения. Когда нажимается кнопка, я бы хотел, чтобы все флажки были установлены, чтобы установить флажок, вставьте его в datatable.извлечь выбранную строку из DataGrid

Как это можно сделать?

+0

вы можете предоставить некоторый код в качестве примера? –

ответ

0

Возможно, что-то подобное поможет?

Он использует шаблон декоратора, чтобы обернуть класс (вероятно, он вышел из ORM, как LINQ2SQL), чтобы вы могли привязать «выбранное» значение. Затем вы можете сохранить поиск выбранных предметов в списке украшенных предметов и сохранить только те.

(Простой пример, не 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> 

код позади:

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; 
     } 
    } 
} 
Смежные вопросы