您的位置:首页 > 其它

Silverlight删除数据表格中的数据,表格头部定义全选按钮,批量删除

2012-09-02 17:36 681 查看
实现的效果如图:



前台实现:

<UserControl.Resources>

<Style x:Key="DataGridColumnHeaderCheckBox" TargetType="data_primitives:DataGridColumnHeader">

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="data_primitives:DataGridColumnHeader":>

<Grid Name="Root">

<CheckBox x:Name="CheckAll" Checked="CheckAll_Checked" Unchecked="CheckAll_Checked" />

</Grid>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</UserControl.Resources><!--用户自定义资源,用于实现表格头部的全选-->

<Grid x:Name="LayoutRoot" Background="White" Height="421" Width="442">

<sdk:DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="12,0,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="376" >

<sdk:DataGrid.Columns>

<sdk:DataGridTemplateColumn Header="名字">

<sdk:DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<TextBlock Text="{Binding Name,Mode=TwoWay}" />

</DataTemplate>

</sdk:DataGridTemplateColumn.CellTemplate>

</sdk:DataGridTemplateColumn>

<sdk:DataGridTemplateColumn Header="删除操作">

<sdk:DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<Button Name="button_Delete" Content="删除" Click="button_Delete_Click" />

</DataTemplate>

</sdk:DataGridTemplateColumn.CellTemplate>

</sdk:DataGridTemplateColumn>

<sdk:DataGridTemplateColumn HeaderStyle="{StaticResource DataGridColumnHeaderCheckBox}"><!--使用自定义资源-->

<sdk:DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<CheckBox x:Name="DeleteEntry" IsChecked="{Binding IsChecked, Mode=TwoWay}"/>

</DataTemplate>

</sdk:DataGridTemplateColumn.CellTemplate>

</sdk:DataGridTemplateColumn>

</sdk:DataGrid.Columns>

<sdk:DataGrid.RowDetailsTemplate>

<DataTemplate>

<StackPanel>

<TextBlock Text="{Binding Age}" />

<TextBlock Text="{Binding IsMan}" />

</StackPanel>

</DataTemplate>

</sdk:DataGrid.RowDetailsTemplate>

</sdk:DataGrid>

<Button Content="删除选中项" Height="23" HorizontalAlignment="Left" Margin="313,265,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />

</Grid>

后台实现:

public class Person

{

string name;

public string Name

{

get { return name; }

set { name = value; }

}

int age;

public int Age

{

get { return age; }

set { age = value; }

}

bool isMan;

public bool IsMan

{

get { return isMan; }

set { isMan = value; }

}

bool isChecked;

public bool IsChecked

{

get { return isChecked; }

set { isChecked = value; }

}

}

//List<Person> itemList = new List<Person>();

ObservableCollection<Person> itemList = new ObservableCollection<Person>();//动态的数据集合

public MainPage()

{

InitializeComponent();

itemList.Add(new Person { Name = "当当", Age = 45, IsMan = true,IsChecked=false });

itemList.Add(new Person { Name = "大雄", Age = 3, IsMan = false, IsChecked = false });

itemList.Add(new Person { Name = "小新", Age = 12, IsMan = false, IsChecked = false });

itemList.Add(new Person { Name = "丁丁", Age = 32, IsMan = true, IsChecked = false });

itemList.Add(new Person { Name = "Gaga", Age = 56, IsMan = true, IsChecked = false });

itemList.Add(new Person { Name = "司空", Age = 33, IsMan = false, IsChecked = false });

itemList.Add(new Person { Name = "lfy", Age = 22, IsMan = true });

itemList.Add(new Person { Name = "lili", Age = 34, IsMan = true, IsChecked = false });

itemList.Add(new Person { Name = "飞羽", Age = 12, IsMan = false, IsChecked = false });

itemList.Add(new Person { Name = "司空", Age = 33, IsMan = false, IsChecked = false });

itemList.Add(new Person { Name = "lfy", Age = 22, IsMan = true });

itemList.Add(new Person { Name = "lili", Age = 34, IsMan = true, IsChecked = false });

itemList.Add(new Person { Name = "飞羽", Age = 12, IsMan = false, IsChecked = false });

dataGrid1.ItemsSource = itemList;

}

//删除单个

private void button_Delete_Click(object sender, RoutedEventArgs e)

{

if (MessageBoxResult.OK == MessageBox.Show("确定要删除吗?", "注意!", MessageBoxButton.OKCancel))

{

var item = (dataGrid1.SelectedItem as Person);

itemList.Remove(item);

}

}

//全选

private void CheckAll_Checked(object sender, RoutedEventArgs e)

{

foreach (var p in itemList)

{

p.IsChecked =(bool)(sender as CheckBox).IsChecked;

}

dataGrid1.ItemsSource = null;

dataGrid1.ItemsSource = itemList;

}

//删除选中项

private void button1_Click(object sender, RoutedEventArgs e)

{

for (int i = 0; i < itemList.Count; i++)

{

if (itemList[i].IsChecked == true)

{

itemList.RemoveAt(i);

i--;

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐