zoukankan      html  css  js  c++  java
  • Silverlight删除数据表格中的数据,表格头部定义全选按钮,批量删除

    实现的效果如图:

     

    前台实现: 

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

  • 相关阅读:
    gulp入门指南
    SASS用法指南
    JavaScript中本地对象、内置对象和宿主对象
    Javascript模块化编程(三):require.js的用法
    用户从手机的浏览器访问www.baidu.com,看到的可能跟桌面PC电脑,是不太一样的网页效果,会更适合移动设备使用。请简要分析一下,实现这种网页区分显示的原因及技术原理。
    你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。
    编写一个参数JavaScript函数parseQueryString,它的用途是把url参数解析为一个对象
    给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组
    改变checkbox的背景颜色
    使用SSH密钥连接Github
  • 原文地址:https://www.cnblogs.com/sydeveloper/p/2667704.html
Copyright © 2011-2022 走看看