C#创建DataTable并填充数据,按钮事件实现全选,并到全选的值。wpf开发

这篇具有很好参考价值的文章主要介绍了C#创建DataTable并填充数据,按钮事件实现全选,并到全选的值。wpf开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

wpf开发中,用事件创建一个datatable度填充到datagird里面,在datagrid里面有第一列是复选框。用一单击事件实现全选,用一个按钮事件得到所选中的值。

<Window x:Class="WpfApp4.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:WpfApp4"

        mc:Ignorable="d"

        Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded_1">

    <Grid>

        <DataGrid x:Name="DataGrid1">

            <DataGrid.Columns>

                <DataGridTemplateColumn>

                    <DataGridTemplateColumn.Header>

                        <CheckBox Click="SelectAll_Click">全选</CheckBox>

                    </DataGridTemplateColumn.Header>

                    <DataGridTemplateColumn.CellTemplate>

                        <DataTemplate>

                            <CheckBox Content="{Binding ID}" />

                        </DataTemplate>

                    </DataGridTemplateColumn.CellTemplate>

                </DataGridTemplateColumn>

            </DataGrid.Columns>

        </DataGrid>

        <Button x:Name="button" Content="批量删除测试得到所有id" HorizontalAlignment="Left" Margin="473,221,0,0" VerticalAlignment="Top" Click="Button_Click" />

    </Grid>

</Window>

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

namespace WpfApp4

{

    /// <summary>

    /// MainWindow.xaml 的交互逻辑

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

        private void Window_Loaded_1(object sender, RoutedEventArgs e)

        {

            // 创建 DataTable

            DataTable dataTable = new DataTable();

            // 添加列

            dataTable.Columns.Add("ID", typeof(int));

            dataTable.Columns.Add("Name", typeof(string));

            dataTable.Columns.Add("Age", typeof(int));

            // 添加行

            for (int i = 1; i <= 10; i++)

            {

                DataRow row = dataTable.NewRow();

                row["ID"] = i;

                row["Name"] = "Name " + i;

                row["Age"] = 20 + i;

                dataTable.Rows.Add(row);

            }

            // 将 DataTable 绑定到 DataGrid1

            DataGrid1.ItemsSource = dataTable.DefaultView;

        }

       

       //实现全选

        private void SelectAll_Click(object sender, RoutedEventArgs e)

        {

            CheckBox headerCheckBox = (CheckBox)sender;

            bool isChecked = headerCheckBox.IsChecked ?? false;

            //MessageBox.Show(isChecked.ToString());

            //if(isChecked==true)

            foreach (var item in DataGrid1.Items)

            {

                if (item is DataRowView yourItem)

                {

                    // Find the CheckBox control in the first column

                    DataGridCell cell = DataGrid1.Columns[0].GetCellContent(yourItem).Parent as DataGridCell;

                    CheckBox checkBox = FindVisualChild<CheckBox>(cell);

                    if (checkBox != null)

                    {

                        //checkBox.IsChecked = true;

                        checkBox.IsChecked = isChecked;

                    }

                }

            }

        }

        // Helper method to find a child control of a certain type in a visual tree

        /// <summary>

        /// 查找第一列所有子元素。

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="parent"></param>

        /// <returns></returns>

        private T FindVisualChild<T>(DependencyObject parent) where T : DependencyObject

        {

            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)

            {

                DependencyObject child = VisualTreeHelper.GetChild(parent, i);

                if (child != null && child is T)

                {

                    return (T)child;

                }

                else

                {

                    T childOfChild = FindVisualChild<T>(child);

                    if (childOfChild != null)

                    {

                        return childOfChild;

                    }

                }

            }

            return null;

        }

        //得到所有id,用于批量删除。

        private void Button_Click(object sender, RoutedEventArgs e)

        {

            string ids = "";

            foreach (var item in DataGrid1.Items)

            {

                if (item is DataRowView yourItem)

                {

                    // Find the CheckBox control in the first column

                    DataGridCell cell = DataGrid1.Columns[0].GetCellContent(yourItem).Parent as DataGridCell;

                    CheckBox checkBox = FindVisualChild<CheckBox>(cell);

                    if (checkBox != null)

                    {

                        ids = ids + checkBox.Content + ",";

                    }

                }

            }

            MessageBox.Show(ids);

        }

    }

}文章来源地址https://www.toymoban.com/news/detail-481184.html

到了这里,关于C#创建DataTable并填充数据,按钮事件实现全选,并到全选的值。wpf开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#获取DataTable的前N行数据然后按指定字段排序

    可以使用以下三种代码: 控制台应用程序FilterDataTableDemo  

    2024年02月11日
    浏览(41)
  • matplotlib实现按钮以及鼠标响应事件

    用matplotlib绘图时,想要添加按钮,首先需要导入 1、设置按钮的位置,第一个值为水平位置,第二个为竖直位置,第三、四个表示按钮的大小。button距离画布左边0.81倍位置,距离下边0.05倍位置,坐标轴的整体宽度和高度占0.1和0.075倍大小。 2、创建按钮,button_axes是放置按钮

    2024年02月11日
    浏览(43)
  • QT6实现按钮双击事件

    实现思路:利用事件过滤器实现按钮双击功能,主要是通过调用installEventFilter函数和重写事件eventFilter函数实现。   1、创建项目 启动Qt Creator,在主菜单的[文件]下,打开[新建文件或项目]菜单,弹出新建文件或项目对话框,创建Qt Widgets Application 项目,在Class Information步骤中

    2024年02月12日
    浏览(45)
  • Qt Button实现按钮长按事件

    最近项目遇到一个需求,通过鼠标按钮长按一直发数据,鼠标松开立即离开。 想了一会儿大概有了几种思路(仅仅是思路,不一样可以实现) 1.重写鼠标事件,通过鼠标检测实现。 2.定时器触发实现。 3.通过某一个参数或者勾选命令实现。 QT按钮类及定时器应用 【QT】定时器

    2024年02月08日
    浏览(56)
  • C# excel与DataTable之间的转换

    注意,Excel读入DataTable需要使用NPOI包 DataTable读入Excel

    2024年02月11日
    浏览(32)
  • C# Winform DataGridView 控件和 DataTable

    目录 一、概述 二、DataTable 的用法 1.创建表和列 2.添加行 3.取值和赋值 4.删除行 5.遍历 DataTable 6.判断 DataTable 列中是否存在某个值 7.设置主键 8.获取 DataRow 所在的行号 9.DataTable 转换为 List 10.将 List 转 DataTable 三、DataGridView 的用法 1.绑定数据 2.获取绑定的数据源 3.获取 / 设置

    2024年02月10日
    浏览(43)
  • C# DataTable和List之间相互转换

    最近在捣鼓DataTable,弄到了类型转换,既然弄了,那就整个记录。有不足之处,请多多指教。我看了一下目前的转换方式基本上都大差不差,基本上都是通过反射来操作的。本文介绍的两种方式也都是利用反射来完成的。两种方式都写成的通用类,仅供参考。 DataTable DataTab

    2024年02月01日
    浏览(35)
  • C# 在控制台整齐的输出 DataTable

    效果: 在 Winform 平台,可以用 DataGridView 这样的控件来显示数据库的表单数据,但在 C# 控制台项目中,如果有用到数据库查询,我们想看看查询语句的效果,就比较困难了,比如,我随意写了一个控制台输出,代码如下: 效果: 在 Navicat 16 for MySQL 软件中的查询结果 由于没

    2024年02月12日
    浏览(64)
  • Unity实现UI按钮Button的按下、抬起、移出、移入事件

    实现思路, 1、重新写类,继承Button,在类中实现相关的事件响应。 2、将类挂载到Cavas下创建的Button按钮上,挂载之前需先移除Button默认的组件button。 3、编写代码给按钮添加事件,这一步与默认的 onClick.AddListener 用法没什么区别。 个人认为这种方法比较灵活,做个记录,方便

    2024年03月14日
    浏览(60)
  • C#中将DataTable转化成ListT的方法解析

    在C#中,数据的操作是至关重要的一个方面,常常需要将数据从一个形式转换成另一个形式以满足我们的需求。其中,DataTable和List是常见的两种数据形式。DataTable是一种表格形式的数据类型,它以行和列的形式存储数据。List是一种集合类型,它可以存储任意类型的对象,并且

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包