zoukankan      html  css  js  c++  java
  • 三、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;
            }
  • 相关阅读:
    《我曾》火了:人这辈子,最怕突然听懂这首歌
    SpringMVC的运行流程
    Directive 自定义指令
    Vue 过滤器
    MVC 和 MVVM的区别
    vue指令
    async
    Generator
    单词搜索
    Promise
  • 原文地址:https://www.cnblogs.com/cvol/p/10647909.html
Copyright © 2011-2022 走看看