WPF DataGrid 动态增加列

news/2024/3/5 6:17:23/文章来源:https://blog.csdn.net/fsdad/article/details/134809328

方式一:通过DataGrid 数据源即DataTable,在DataTable里面动态增加了列之后,重新构造每一行数据,设置DataGrid.ItemsSource = null; 然后再重新设置ItemsSource到DataTable

 public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}int newColumnIndex = 1;private void AddColum_Click(object sender, RoutedEventArgs e){DataTable dt = (DataGridtest.ItemsSource as DataView).ToTable();if (DataGridtest.ItemsSource == null){return;}dt.Columns.Add(new DataColumn("New Column" + newColumnIndex++));for (int i = 0; i < dt.Rows.Count; i++){dt.Rows[i][dt.Columns.Count - 1] = i.ToString() + " - New Column";}DataGridtest.ItemsSource = null;DataGridtest.ItemsSource = dt.DefaultView;}private void ShowClomun_Click(object sender, RoutedEventArgs e){DataTable dt = new DataTable();for (int i = 0; i < 100; i++){dt.Columns.Add(new DataColumn(string.Format("{0}{1}", "Colum", i)));}DataRow dr;for (int i = 0; i < 200; i++){dr = dt.NewRow();for (int columIndex = 0; columIndex < dt.Columns.Count; columIndex++)dr[columIndex] = i.ToString() + " - " + columIndex.ToString();dt.Rows.Add(dr);}DataGridtest.ItemsSource = dt.DefaultView;}
}

方式二:通过ObservableCollection<dynamic>集合,它可以动态的添加属性,这种类型添加好属性之后,重新设置DataGrid的ItemsSource绑定即可

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Dynamic;
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 DynymicDataGrid
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}List<string> header = new List<string>();ObservableCollection<dynamic> items = new ObservableCollection<dynamic>();public MainWindow(){InitializeComponent();for (int i = 0; i < 100; i++){header.Add("Colum" + i);}}int newColumnIndex = 1;private void AddColum_Click(object sender, RoutedEventArgs e){foreach (ExpandoObject item in items){dynamic x = item;x.NewColumn = "NewColumn";}DataGridtest.Columns.Add(new DataGridTextColumn() { Header = "NewColumn", Binding = new Binding("NewColumn") });newColumnIndex++;}private void ShowClomun_Click(object sender, RoutedEventArgs e){for (int i = 0; i < 100; i++){dynamic item = new ExpandoObject();foreach (var vheader in header){item.A1 = "A value - " + i.ToString();item.A2 = "A value - " + i.ToString();item.A3 = "A value - " + i.ToString();item.A4 = "A value - " + i.ToString();item.A5 = "A value - " + i.ToString();item.A6 = "A value - " + i.ToString();item.A7 = "A value - " + i.ToString();item.A8 = "A value - " + i.ToString();item.A9 = "A value - " + i.ToString();item.A10 = "A value - " + i.ToString();item.A10 = "A value - " + i.ToString();item.A12 = "A value - " + i.ToString();item.A13 = "A value - " + i.ToString();item.A14 = "A value - " + i.ToString();item.A15 = "A value - " + i.ToString();item.A16 = "A value - " + i.ToString();item.A17 = "A value - " + i.ToString();item.A18 = "A value - " + i.ToString();item.A19 = "A value - " + i.ToString();item.A20 = "A value - " + i.ToString();item.A21 = "A value - " + i.ToString();item.A22 = "A value - " + i.ToString();item.A23 = "A value - " + i.ToString();item.A24 = "A value - " + i.ToString();item.A25 = "A value - " + i.ToString();item.A26 = "A value - " + i.ToString();item.A27 = "A value - " + i.ToString();item.A28 = "A value - " + i.ToString();item.A29 = "A value - " + i.ToString();item.A30 = "A value - " + i.ToString();item.A31 = "A value - " + i.ToString();item.A32 = "A value - " + i.ToString();item.A33 = "A value - " + i.ToString();item.A34 = "A value - " + i.ToString();item.A35 = "A value - " + i.ToString();item.A36 = "A value - " + i.ToString();item.A37 = "A value - " + i.ToString();item.A38 = "A value - " + i.ToString();item.A39 = "A value - " + i.ToString();item.A40 = "A value - " + i.ToString();item.A41 = "A value - " + i.ToString();item.A42 = "A value - " + i.ToString();item.A43 = "A value - " + i.ToString();item.A44 = "A value - " + i.ToString();item.A45 = "A value - " + i.ToString();item.A46 = "A value - " + i.ToString();item.A47 = "l value - " + i.ToString();item.A48 = "A value - " + i.ToString();item.A49 = "A value - " + i.ToString();item.A50 = "A value - " + i.ToString();item.A51 = "A value - " + i.ToString();item.A52 = "A value - " + i.ToString();item.A53 = "A value - " + i.ToString();item.A54 = "A value - " + i.ToString();item.A55 = " A value - " + i.ToString();item.A56 = " A value - " + i.ToString();item.A57 = " A value - " + i.ToString();item.A58 = " A value - " + i.ToString();item.A59 = " A value - " + i.ToString();item.A60 = " A value - " + i.ToString();item.A61 = " A value - " + i.ToString();item.A62 = " A value - " + i.ToString();item.A63 = " A value - " + i.ToString();item.A64 = " A value - " + i.ToString();item.A65 = " A value - " + i.ToString();item.A66 = " A value - " + i.ToString();item.A67 = " A value - " + i.ToString();item.A68 = " A value - " + i.ToString();item.A69 = " A value - " + i.ToString();item.A70 = " A value - " + i.ToString();item.A71 = " A value - " + i.ToString();item.A72 = " A value - " + i.ToString();item.A73 = " A value - " + i.ToString();item.A74 = " A value - " + i.ToString();item.A75 = " A value - " + i.ToString();item.A76 = " A value - " + i.ToString();item.A77 = " A value - " + i.ToString();item.A78 = " A value - " + i.ToString();item.A79 = "A value - " + i.ToString();item.A80 = "A value - " + i.ToString();item.A81 = " A value - " + i.ToString();item.A82 = " A value - " + i.ToString();item.A83 = " A value - " + i.ToString();item.A84 = " A value - " + i.ToString();item.A85 = " A value - " + i.ToString();item.A86 = " A value - " + i.ToString();item.A87 = " A value - " + i.ToString();item.A88 = " A value - " + i.ToString();item.A89 = " A value - " + i.ToString();item.A90 = " A value - " + i.ToString();item.A91 = " A value - " + i.ToString();item.A92 = " A value - " + i.ToString();item.A93 = " A value - " + i.ToString();item.A94 = " A value - " + i.ToString();item.A95 = " A value - " + i.ToString();item.A96 = " A value - " + i.ToString();item.A97 = " A value - " + i.ToString();item.A98 = " A value - " + i.ToString();item.A99 = "A value - " + i.ToString();}items.Add(item);}for (int i = 0; i < 40; i++){DataGridtest.Columns.Add(new DataGridTextColumn() { Header = "A" + i, Binding = new Binding("A" + i) });}DataGridtest.ItemsSource = items;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ldbm.cn/p/270738.html

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL(五)(queue篇)

我发现之前一版在电脑上看 常用函数部分 没有问题,由于是手打上去的,在手机上看会发生错位问题,现已将电脑原版 常用函数部分 截图改为图片形式,不会再发生错位问题,非常感谢大家的支持 ### priority_queue优先队列出现频率非常高,尤为重要(是一定要掌握的数据结构) 1.queue队…

python socket编程6 - 使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的例子

使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的示例。 一、PyQt6 实现的界面 二、TCP server代码的修改示意 界面提供网络参数的配置&#xff0c;以及提供人机交互过程中的数据获取和显示。 1、把上面的server代码封装成两个部分 A、class Server 负责接受UI界面…

【分享】我想上手机器学习

目录 前言 一、理解机器学习 1.1 机器学习的目的 1.2 机器学习的模型 1.3 机器学习的数据 二、学习机器学习要学什么 2.1 学习机器学习的核心内容 2.2 怎么选择模型 2.3 怎么获取训练数据 2.4 怎么训练模型 三、机器学习的门槛 3.1 机器学习的第一道门槛 3.2 机器…

最新Redis7 的十大数据类型(最全指令)

Redis 是一种高性能的键值存储系统&#xff0c;支持多种数据类型。以下是 Redis 的十大主要数据类型&#xff1a; 字符串 (String): 最简单的数据类型&#xff0c;可以包含任意数据&#xff0c;如文本、二进制数据等。 列表 (List): 有序的字符串元素集合&#xff0c;支持从两…

【父子进程/AES/XTEA/SMC】赛后复盘

官方wp: 进程重影技术&#xff1a; 进程重映像利用了Windows内核中的缓存同步问题&#xff0c;它会导致可执行文件的路径与从该可执行文件创建的映像节区所报告的路径不匹配。通过在一个诱饵路径上加载DLL&#xff0c;然 后卸载它&#xff0c;然后从一个新路径加载它&#x…

自动化运维工具-ansible部署

首先我们来谈一下&#xff0c;为什么要引入自动化运维呢&#xff1f; 引入自动化运维的目的是为了提高运维效率、降低人工操作的错误率、减少重复性的工作、提高系统的可靠性和稳定性。传统的手动运维方式存在以下问题&#xff1a; 出现了大量的人工干预&#xff0c;运维人员需…

PHP基础 - 输入输出

在 PHP 中,有多种方法可以用来输出内容。下面是其中的几种: 1、echo: 这是最常见的输出语句之一,可以输出一个或多个字符串。它是一个语言结构,可以省略括号。使用示例如下: <?php // 使用 echo 语句输出一个字符串 echo "Hello, world!\n";// 可以使用…

Elastcsearch:通过 Serverless 提供更多服务

作者&#xff1a;Ken Exner 人们使用 Elasticsearch 解决最大数据挑战的方式一直令我们感到惊讶。 从超过 40 亿次下载、70,000 次提交、1,800 名贡献者以及我们全球社区的反馈中可以清楚地看出这一点。 Elastic 在广泛的用例中发挥的作用促使我们简化复杂性&#xff0c;让搜索…

Docker网络原理

Docker网络概述 1.桥接模式介绍 bridge模式是docker的默认网络模式。 桥接模式是一种用于连接两个不同网络段的设备&#xff0c;使它们能够共享通信的一种方式。 桥接设备工作在OSI模型的第二层&#xff0c;即数据链路层&#xff0c;通常基于MAC地址进行帧转发。 物理层连接…

『PyTorch学习笔记』如何快速下载huggingface模型/数据—全方法总结

如何快速下载huggingface模型/数据—全方法总结 文章目录 一. 如何快速下载huggingface大模型1.1. IDM(Windows)下载安装连接1.2. 推荐 huggingface 镜像站1.3. 管理huggingface_hub cache-system(缓存系统) 二. 参考文献 一. 如何快速下载huggingface大模型 推荐 huggingface…

Cmkae外部依赖管理

文章目录 一、cmake依赖管理介绍二、源码依管理1. FetchContent与find_package进行集成 2. CPM3. git submodule附加&#xff1a; address_sanitizer 和 undefined sanitizer 一、cmake依赖管理介绍 CMake 是跨平台的构建系统&#xff0c;支持 C/C、Objective-C、Fortran 等多种…

Spring Cloud Alibaba实践 --Sentinel

sentinel简介 Sentinel的官方标题是&#xff1a;分布式系统的流量防卫兵。从名字上来看&#xff0c;很容易就能猜到它是用来作服务稳定性保障的。对于服务稳定性保障组件&#xff0c;如果熟悉Spring Cloud的用户&#xff0c;第一反应应该就是Hystrix。但是比较可惜的是Netflix…

苹果股价为何会在11月份突然暴涨?12月份还会继续上涨吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 苹果股价受益于大盘而上涨 随着第四季度财报的公布&#xff0c;全球市值最高的公司苹果(AAPL)的股价在上个月出现了暴涨&#xff0c;并在11月份剩下的大部分时间里一直保持着与标普500指数一致的走势。 猛兽财经认为主要原…

设备温度和振动综合监测:温振一体式传感器的优点和应用

随着工业设备的复杂性和自动化程度的提高&#xff0c;对设备状态监测的需求也日益增加。温振一体式传感器作为一种集振动和温度监测于一体的传感器&#xff0c;具备多项优势&#xff0c;因此在工业设备状态监测领域得到广泛应用。 温振一体式传感器基于振动传感器和温度传感器的…

网工学习9-STP配置(二)

如图 1 所示&#xff0c;当前网络中存在环路&#xff0c; SwitchA 、SwitchB 、SwitchC 和 SwitchD 都运行 STP&#xff0c;通过 彼此交互信息发现网络中的环路&#xff0c;并有选择的对某个端口进行阻塞&#xff0c;最终将环形网络结构修剪成无 环路的树形网络结构&#xff…

基于ssm家庭理财系统源码和论文

基于ssm家庭理财系统源码和论文743 idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 开发技术 ssm 摘要 随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化&#xff…

Matlab simulink PLL学习笔记

本文学习内容&#xff1a;【官方】2022小迈步之 MATLAB助力芯片设计系列&#xff08;一&#xff09;&#xff1a;电路仿真与模数混合设计基础_哔哩哔哩_bilibili 时域模型 testbench搭建 菜单栏点击simulink 创建空白模型 点击库浏览器 在PLL里面选择一种架构拖拽到画布。 如…

【Go】protobuf介绍及安装

目录 一、Protobuf介绍 1.Protobuf用来做什么 2. Protobuf的序列化与反序列化 3. Protobuf的优点和缺点 4. RPC介绍 <1>文档规范 <2>消息编码 <3>传输协议 <4>传输性能 <5>传输形式 <6>浏览器的支持度 <7>消息的可读性和…

【matlab程序】matlab画螺旋图|旋转图

%% 数学之美====》螺旋线 % 海洋与大气科学 % 20231205 clear;clc;close all; n=10; t=0:0.01:2pin; R=1; xx=nan(length(t),1);yy=nan(length(t),1); for i=1:length(t) xx(i)=Rcos(t(i)); yy(i)=Rsin(t(i)); R=R+1; end figure set(gcf,‘position’,[50 50 1200 1200],‘col…

virtualenv创建虚拟环境

目录 概念安装创建虚拟环境激活虚拟环境删除虚拟环境退出虚拟环境更改虚拟环境路径 概念 virtualenv是一个创建隔离的Python运行环境的工具。它允许用户为每个Python项目创建一个独立的虚拟环境&#xff0c;以避免不同项目之间的依赖冲突。 安装 pip install virtualenv virtua…