• 三、WPF 全选,反选,以及获取选中行


    页面代码

           <TextBlock>   
                    <CheckBox Name="cbAllCreate" Click="CbAllCreate_Click">All</CheckBox> 
                    <CheckBox Name="cbInverseCreate" Click="CbInverseCreate_Click">Inverse</CheckBox>
                </TextBlock>
                <DataGrid Name="dgCreateTable" AutoGenerateColumns="False" VerticalScrollBarVisibility="Visible" Height="210" EnableRowVirtualization="False">
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Chose" ></DataGridCheckBoxColumn>
                        <DataGridTextColumn Header="Name"   Binding="{Binding}" IsReadOnly="True"></DataGridTextColumn>
                    </DataGrid.Columns>
                </DataGrid>

    注:如果不加 EnableRowVirtualization="False"  全选反选会有遗漏的情况,所以一定要加上。

    代码  

          /// <summary>
            /// 全选
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void CbAllCreate_Click(object sender, RoutedEventArgs e)
            {
                CbAll(dgCreateTable, cbAllCreate);
    
            }
            /// <summary>
            /// 反选
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void CbInverseCreate_Click(object sender, RoutedEventArgs e)
            {
                Inverse(dgCreateTable, cbInverseCreate);
            }
          /// <summary>
            /// 全选
            /// </summary>
            /// <param name="dg"></param>
            /// <param name="cb"></param>
            void CbAll(DataGrid dg, CheckBox cb)
            {
                dg.IsEnabled = cb.IsChecked != true;
    
                for (int i = 0; i < dg.Items.Count; i++)
                {
                    DataGridRow neddrow = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i);
                    //获取该行的某列
                    if (neddrow != null)
                    {
                        FrameworkElement objElement = dg.Columns[0].GetCellContent(neddrow);
                        if (objElement != null)
                        {
                            CheckBox objChk = (CheckBox)objElement;
                            objChk.IsChecked = cb.IsChecked;
                        }
                    }
                }
            }
            /// <summary>
            /// 反选
            /// </summary>
            /// <param name="dg"></param>
            /// <param name="cb"></param>
            void Inverse(DataGrid dg, CheckBox cb)
            {
                // cb.IsChecked = false;
                for (int i = 0; i < dg.Items.Count; i++)
                {
                    DataGridRow neddrow = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i);
                    //获取该行的某列
                    if (neddrow != null)
                    {
                        FrameworkElement objElement = dg.Columns[0].GetCellContent(neddrow);
                        if (objElement != null)
                        {
                            CheckBox objChk = (CheckBox)objElement;
                            objChk.IsChecked = !objChk.IsChecked;
                        }
                    }
                }
            }

    获取datagrid中选中的行

     List<string> GetDataGridList(DataGrid dg)
            {
                List<string> list = new List<string>();
                for (int i = 0; i < dg.Items.Count; i++)
                {
                    DataGridRow neddrow = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(i);
                    //获取该行的某列
                    if (neddrow == null)
                        continue;
                    FrameworkElement objElement = dg.Columns[0].GetCellContent(neddrow);
                    if (objElement == null)
                        continue;
    
                    CheckBox objChk = (CheckBox)objElement;
                    if (objChk.IsChecked != true)
                        continue;
    
                    var obj = dg.Columns[1].GetCellContent(neddrow);
                    if (obj == null)
                        continue;
                    var tb = (TextBlock)obj;
                    if (!string.IsNullOrEmpty(tb.Text))
                    {
                        list.Add(tb.Text);
                    }
                }
                return list;
            }
  • 相关阅读:
    win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程( Win7 SQL Server2005 安装教程)
    PL/SQL -->隐式游标(SQL%FOUND)
    sql%found sql%notfound sql%rowcount sql%isopen
    C# WINFORM 窗体执行ORACLE存储过程 进行增删改查 自己编写借助网络(二)
    C# WINFORM 窗体执行ORACLE存储过程 进行增删改查 自己编写借助网络
    .net 接收存储过程的返回值 。。。。
    oracle-扫盲贴:存储过程实现增删改查
    sql加一个%号是什么意思
    关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
    iOS网络请求之数据解析
  • 原文地址:https://www.cnblogs.com/cvol/p/10647909.html
Copyright © 2020-2023  润新知