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

原文地址:https://www.cnblogs.com/cvol/p/10647909.html

时间: 2024-10-12 18:36:38

三、WPF 全选,反选,以及获取选中行的相关文章

全选反选以及获取选中的数据

<!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title>演示:jQuery实现的全选.反选和不选功能</title> <!--<link rel="stylesheet" type="text/css" href="../css/main.css"/>--> <sty

dView实现checkbox全选反选(自带的ShowSelectCheckBOx)并获取选中checkbox对应的值集合

第一步,显示checkbox按钮: 点击AspxGridView的columns,你可以直接选择增加一行Command Column或者随便选择一种然后点击Change To Commadn Column;默认的ShowSelectCheckBOx是true,我们可以不用管,这样你就看到每行都有checkBox按钮了. 第二步,表头部显示CheckBox,点击实现全选|反选功能: 我们切换回源代码,找到AspxGridView的GridViewCommandColumn列,在该列中增加 <Hea

ASPxGridView实现checkbox全选反选(自带的ShowSelectCheckBOx)并获取选中checkbox对应的值集合

第一步,显示checkbox按钮: 点击AspxGridView的columns,你可以直接选择增加一行Command Column或者随便选择一种然后点击Change To Commadn Column;默认的ShowSelectCheckBOx是true,我们可以不用管,这样你就看到每行都有checkBox按钮了. 第二步,表头部显示CheckBox,点击实现全选|反选功能: 我们切换回源代码,找到AspxGridView的GridViewCommandColumn列,在该列中增加 <Hea

jquery实现全选、全不选、反选、获取选中的所有值总结

HTML 我们的页面上有一个歌曲列表,列出多行歌曲名称,并匹配复选框供用户选择,并且在列表下方有一排操作按钮. <!doctype html><html><head> <meta charset="UTF-8"> <title>checkbox2</title> <style> li { list-style:none; } </style> <script src="js/

checkbox全选 反选 不选 并获取id的值

$("#lblContents :checkbox").each(function () {                 if (this.checked) {                     this.checked = false;                     ids ="";                 }                 else {                     this.checked = true;

分享知识-快乐自己:复选框、全选/反选/获取值

1):复选框 全选与反选 .获取选中的值 取消选中的框 1.全选/反选 <body> <input type="checkbox" checked> <input type="checkbox"> <input type="checkbox"> <input type="checkbox"> <input type="checkbox">

javascript教程系列41:表格全选反选,经典案例详解

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { padding: 0; margin: 0; } .wrap { width: 300px; margin: 100px auto 0; } table { border-collapse: collap

jquery实现全选/反选功能

<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>多选框全选/反选</title> <script src="http://res01.xesimg.com/jquery/jquery.min.js">&l

js 全选 不选 反选

js实现 全选 不选 反选 思路: 1,获取元素 2,给全选 不选 反选添加点击事件 3,用for循环checkbox 4,把checkbox的checked设置为true即实现全选 5,把checkbox的checked设置为false即实现不选 6,通过if判断,如果checked为true选中状态的,就把checked设为false不选状态,如果checked为false不选状态的,就把checked设为true选中状态. html代码: <input type="button&qu