DataGrid数据绑定

后台数据绑定

用户场景是生成报表,展示公司各员工每个月的绩效

数据结构

包括报表和单个员工绩效两个实体

public class Report
{/// <summary>/// 统计时间/// </summary>public string StatisticalDate { get; set; }public List<ReportDetail> ReportDetails { get; set; }
}
public class ReportDetail
{/// <summary>/// 职员姓名/// </summary>public string EmployeeName { get; set; }/// <summary>/// 统计数据/// </summary>public decimal Data { get; set; }
}

关键代码

DataGrid dataGrid = new DataGrid();
var _ds = new DataSet("Test");
Dt = _ds.Tables.Add("月度绩效表");
//create columns
//创建列
Dt.Columns.Add("月份");
foreach (var item in reports[0].ReportDetails)
{Dt.Columns.Add(item.EmployeeName);
}
//fill data to rows
//赋值数据
for(int i=0;i< reports.Count;i++)
{var theRow = Dt.NewRow();theRow[0] = reports[i].StatisticalDate;for (int j = 0; j < reports[i].ReportDetails.Count; j++){theRow[j+1] = reports[i].ReportDetails[j].Data;}Dt.Rows.Add(theRow);
}
//数据绑定
dataGrid.ItemsSource = Dt.AsDataView();
//将控件添加到Grid
MyGrid.Children.Add(dataGrid);

示例代码

https://github.com/zLulus/NotePractice/blob/dev3/WPF/WpfDemo/Bind/DataGridBackgroundBind.xaml
https://github.com/zLulus/NotePractice/blob/dev3/WPF/WpfDemo/Bind/DataGridBackgroundBind.xaml.cs

其他:列头重复解决方案

当前用户场景,如果遇到行列互换,即将员工姓名和月份互换,可能出现列名相同的问题(员工同名),则最好将列头绑定改为员工姓名+员工编号,保证唯一性,前端只显示名称,绑定"名称+ID"

前端数据绑定

数据结构

包括教师和教师信息扩展两个实体

public class Teacher
{public string SchoolNumber { get; set; }public string Name { get; set; }public string Sex { get; set; }public TeacherDetailInfo TeacherDetailInfo { get; set; }
}
public class TeacherDetailInfo
{public DateTime EntryTime { get; set; }public string Address { get; set; }
}

关键代码

<DataGrid ItemsSource="{Binding }" AutoGenerateColumns="False" CanUserAddRows="False"><DataGrid.Columns><DataGridTextColumn Header="编号" Binding="{Binding SchoolNumber}"/><DataGridTextColumn Header="姓名" Binding="{Binding Name}"/><DataGridTextColumn Header="性别" Binding="{Binding Sex}"/><!--格式化日期--><DataGridTextColumn Header="入职时间" Binding="{Binding Path=TeacherDetailInfo.EntryTime, StringFormat=\{0:yyyy年MM月dd日\}}"/><!--如果这里是双向绑定,则是下面的写法,Mode是双向(TwoWay),触发器是变化即触发--><!--<DataGridTextColumn Header="入职时间" Binding="{Binding Path=TeacherDetailInfo.EntryTime,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>--><DataGridTextColumn Header="住址" Binding="{Binding Path=TeacherDetailInfo.Address}"/></DataGrid.Columns>
</DataGrid>

示例代码

https://github.com/zLulus/NotePractice/blob/dev3/WPF/WpfDemo/Bind/DataGridBindMultiData.xaml
https://github.com/zLulus/NotePractice/blob/dev3/WPF/WpfDemo/Bind/DataGridBindMultiData.xaml.cs

转载于:https://www.cnblogs.com/Lulus/p/9726375.html

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

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

相关文章

String.valueOf() 和 toString的区别

当我们使用对象转换为String类型时 在使用toString()方法中&#xff0c;因为java.lang.Object类里已有public方法.toString()&#xff0c;所以对任何严格意义上的java对象都可以调用此方法。但在使用时要注意&#xff0c;必须保证object不是null值&#xff0c;否则将抛出NullP…

[转]Angular2 使用管道Pipe以及自定义管道格式数据

本文转自&#xff1a;https://www.pocketdigi.com/20170209/1563.html 管道(Pipe)可以根据开发者的意愿将数据格式化&#xff0c;还可以多个管道串联。 纯管道(Pure Pipe)与非纯管道(Impure Pipe) 管道分纯管道(Pure Pipe)和非纯管道(Impure Pipe)。默认情况下&#xff0c;管道…

解决Ajax返回的json数据乱码问题

有以下两种方式&#xff1a; 直接设置编码格式&#xff1a; response.setCharacterEncoding("utf-8");设置客户端浏览器的html的编码格式&#xff1a;response.setContentType("text/html; charsetutf-8");

BRVAH(让RecyclerView变得更高效)(1)

本文来自网易云社区作者&#xff1a;吴思博对于RecyclerView&#xff0c; 我们重复编写着那一个又一个的列表界面&#xff0c;有的要分组&#xff0c;有的要添加广告头部、有的要不同类型item排列、等等需求&#xff0c;主要代码有大部分是重复的&#xff0c;如果有一个框架能够…

校验输入的两次密码是否一致的问题

使用jQuery框架中的validate插件&#xff0c;messages为提示信息。首先导入相应的js文件。 <script src"js/jquery-1.8.2.js"></script> <script src"js/jquery.validate.min.js"></script> <script src"js/messages_zh.…

MySQL自动备份shell脚本

在数据库的日常维护工作中&#xff0c;除了保证业务的正常运行以外&#xff0c;就是要对数据库进行备份&#xff0c;以免造成数据库的丢失&#xff0c;从而给企业带来重大经济损失。通常备份可以按照备份时数据库状态分为热备和冷备&#xff0c;按照备份数据库文件的大小分为增…

“==”和equals()的用法

equals()是java.lang.Object类的方法。 *对于字符串变量来说&#xff1a;”是比较两个对象在内存中的首地址&#xff1b;“equals()”是比较字符串中所包含的内容是否相同。 比如&#xff1a; String s1,s2,s3 "abc", s4 "abc" ; s1 new String("…

PyQt5菜单添加+事件+状态栏-7

1 from PyQt5.QtWidgets import QApplication,QMainWindow,QAction2 from PyQt5.QtGui import QIcon3 #demo_7:菜单添加action以及状态栏显示消息4 import sys5 class Example(QMainWindow):6 def __init__(self):7 self.app QApplication(sys.argv)8 sup…

git命令图片

转载于:https://www.cnblogs.com/duanwandao/p/9734074.html

怎么把JSP的参数:先传到JSP中,然后传给后台

第一种&#xff1a;可以在JSP中使用form表单&#xff0c;把参数放在input中hidden起来&#xff0c;然后在后台中取出来。代码如下&#xff1a; //前台jsp <form action"后台URL" method"post"><input style"display: none" name"…

Power Strings

题目连接 1 #include <stdio.h>2 #include <algorithm>3 #include <string.h>4 using namespace std;5 6 inline int read()7 {8 int x0,f1;char chgetchar();9 while(ch<0||ch>9){if(ch-)f-1;chgetchar();} 10 while(ch>0&&ch…

Content后台的获取为什么为空

在JSP页面中&#xff1a; <s:textarea placeholder"请输入正文" class"bookcontent" name"bookcontent"></s:textarea> 在后台需要获取数据&#xff1a; String bookcontent ServletActionContext.getRequest().getParameter(&q…

将vi打造成IDE

一.环境 发行版:Ubuntu 18.04 LTS 代号:bionic 内核版本:4.15.0-33-generic 二.步骤 2.1 准备工作 sudo apt-get install python3-pip clang cmake python2.7-dev -y pip3 install future frozendict 2.2 获取vundle git clone https://github.com/VundleVim/Vundle.vim.git ~…

解题: SDOI 2011 染色

题面 强行把序列问题通过树剖套在树上。。。算了算是回顾了一下树剖的思想。 每次树上跳的时候注意跳的同时维护当前拼出来的左右两条链的靠上的端点&#xff0c;然后拼起来的时候讨论一下拼接点&#xff0c;最后一下左右两边的端点都要考虑 1 #include<cstdio>2 #includ…

decode()、nvl()等用法详解

1、decode( 条件, if1, then1, if2, then2&#xff0c; 缺省值 )&#xff1a; 当条件 1时&#xff0c;则为1&#xff1b;else条件 2时&#xff1b;则为2&#xff1b;都不等时&#xff0c;为缺省值。 2、nvl&#xff08;a , b&#xff09;函数&#xff1a;如果a为NULL&#xf…

java.lang.OutOfMemoryError: PermGen space

使用Tomcat报java.lang.OutOfMemoryError: PermGen space错误时&#xff0c;这是tomcat的内存不够的原因&#xff0c;也就是tomcat的内存溢出。 这是我们只要在tomcat的配置下添加服务内存就可以了&#xff0c;添加内存方法&#xff0c;只要加入 -Xms256M -Xmx512M -XX:PermS…

js继承问题

JavaScript 继承问题 继承的发展史 传统形式 ----> 原型链 继承了父級的所有的属性&#xff08;原型链上的也会继承&#xff09;过多的继承了没有用的属性&#xff0c;代码冗余&#xff0c;执行效率低下子級无法向父級进行传参如果要给之級通过原型来添加属性和方法&#xf…

怎么把jad反编译放到Eclipse中

可以在CSDN下载页上进行下载哦&#xff0c;免费的哦&#xff0c;不要积分。 http://download.csdn.net/detail/farxix/9838195 我们把下载下来的jad资源包解压出来&#xff0c;如下图&#xff1a; 首先&#xff1a; 然后&#xff1a; 打开eclipse进行设置&#xff0…

一些很有意思的JS现象

关于JS对象的 . 和 [] []除了属性名可以比 .天马行空以外(比如我们要添加一个为33-abc的属性&#xff0c;一定得用[]))&#xff0c;还有一个实际操作中的区别 Object.is的作用和两个奇特的现象 还记得isNaN的作用&#xff0c;但有时候我们就想直接比较两个数据&#xff0c;总不…

怎么查看eclipse的版本号

在电脑上找到你安装eclipse的路径&#xff0c;找到readme点击打开&#xff0c;如下图所示&#xff1a; 查看版本号&#xff1a;