C# WPF 表格控件的前后台数据交互?

概述

  GridControl控件使用我们已经进行了实例讲解,这节内容我们列举一个特殊的应用场景:表格中有一列CheckBox,默认都处于勾选状态,当用户通过界面操作后,我们要确保用户至少选择了一项,相当于一次数据验证,这个怎么做呢?这里其实有个问题是,你每个checkbox的选中与取消选中,我们可以通过属性的set属性获知,但是难点在于我们每次操作的对象只是集合的一个实例,我们要知道集合中其它实例的状态就需要一些特殊的操作,可能比较绕,我们先看运行结果。

运行结果

684176db2fede8acd1e5001c8b16206b.gif

源代码

前台:

<StackPanel><Label Content="this is a tab control page" Margin="5"/><dxg:GridControl ItemsSource="{Binding GridParamItems}" MaxHeight="400"><dxg:GridColumn Header="姓名" FieldName="Name" Width="80" /><dxg:GridColumn Header="选择" FieldName="IsChecked" Width="80" /><dxg:GridColumn Header="选择" Width="80" ><dxg:GridColumn.CellTemplate><DataTemplate><CheckBox IsChecked="{Binding RowData.Row.IsChecked}"HorizontalAlignment="Center" VerticalAlignment="Center" /></DataTemplate></dxg:GridColumn.CellTemplate></dxg:GridColumn></dxg:GridControl></StackPanel>

这里没啥新的内容,和上节一样,不清楚的看上一篇内容;

后台代码:

using PropertyChanged;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;namespace Caliburn.Micro.Hello
{[AddINotifyPropertyChangedInterface]public class SubTabPageViewModel{public ObservableCollection<GridParamDTO> GridParamItems { get; set; } = new ObservableCollection<GridParamDTO>();public SubTabPageViewModel(){GridParamItems.Add(new GridParamDTO() { Name = "张三", IsChecked = true });GridParamItems.Add(new GridParamDTO() { Name = "李四", IsChecked = true });}}public class GridParamDTO{public string Name { get; set; }private bool isChecked;public bool IsChecked { get{return isChecked;}set{try{if (!value){var keyValue = Name;if (IsCheckedDic.Count == 2){keyValue = IsCheckedDic.Keys.Where(k => k != Name).ToList()[0];}if (IsCheckedDic.Count == 1|| IsCheckedDic.Count == 2 && !IsCheckedDic[keyValue]){MessageBox.Show("至少得勾选一个人");if (!IsCheckedDic.Keys.Contains(Name)){IsCheckedDic.Add(Name, isChecked);}else{IsCheckedDic[Name] = isChecked;}return;}}isChecked = value;if (!IsCheckedDic.Keys.Contains(Name)){IsCheckedDic.Add(Name, isChecked);}else{IsCheckedDic[Name] = isChecked;}}catch(Exception ex){MessageBox.Show($"{ex}");}}}public static Dictionary<string,bool> isCheckedDic;public static Dictionary<string, bool> IsCheckedDic{ get{if(isCheckedDic == null){isCheckedDic = new Dictionary<string, bool>();}return isCheckedDic;}set{isCheckedDic = value;}} }
}

这里我们增加了一个静态的字典,每次将我们当前是否选中的一个状态存起来,这样每次前台界面进行操作以后,我们就可以通过字典中的信息去进行判断目前是否至少有一个人员信息被选中了.感觉方法不够丝滑,如有更好的方法实现这个需求,麻烦给小编留言!

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

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

相关文章

Java(C#)基础差异-语法

1、long类型 Java long类型&#xff0c;若赋值大于int型的最大值&#xff0c;或小于int型的最小值&#xff0c;则需要在数字后加L或者l&#xff0c;表示该数值为长整数&#xff0c;如long num2147483650L。 举例如下&#xff1a; public static void main(String[] args) {/** …

android防止左向右滑出程序,Android——ViewPager禁止左右滑动的实现

目录1 背景用ViewPagerBottomNavigationView多个Fragment快速搭建的页面切换架构&#xff0c;一个有四个页面&#xff0c;因为测试需要&#xff0c;需要屏蔽掉中间的两个&#xff0c;做法是&#xff1a;设置不可点击选择&#xff1a;xml布局文件中&#xff0c;BottomNavigation…

Yii2 的快速配置 api 服务 yii2-fast-api

yii2-fast-api yii2-fast-api是一个Yii2框架的扩展&#xff0c;用于配置完善Yii2&#xff0c;以实现api的快速开发。 此扩展默认的场景是APP的后端接口开发&#xff0c;因此偏向于实用主义&#xff0c;并未完全采用restfull的标准&#xff0c;方便前端开发处理接口数据以及各种…

.NET6打包部署到Windows Service

1.安装Nuget包安装以下nuget包支持windows service<PackageReference Include"Microsoft.AspNetCore.Hosting.WindowsServices" Version"6.0.10" /> <PackageReference Include"Microsoft.Extensions.Hosting.WindowsServices" Version…

传统家电在智能家居变革的五大优势

而在众多向智能家居领域转型变革的企业中&#xff0c;看似落后的传统家电企业&#xff0c;却占据着一定的优势。 产品优势 传统家电企业在产品上的优势主要体现在企业拥有产品本身的设计、技术、生产、制造和营销渠道&#xff0c;其产品不论是从外观设计、零件制造还是零件组装…

《Apache Kafka实战》读书笔记-调优Kafka集群

《Apache Kafka实战》读书笔记-调优Kafka集群 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 一.确定调优目标 1>.常见的非功能性要求 一.性能&#xff08;performance&#xff09;最重要的非功能性需求之一。…

android emoji unicode编码表,unicode编码

unicode编码app是一款字符查找客户端应用&#xff0c;通过unicode编码可以方便寻找特定字符&#xff0c;查看字符表情详细的描述&#xff0c;并且利用unicode编码就可以快捷复制任意unicode编码&#xff0c;提高开发效率&#xff0c;非常的实用&#xff0c;快来下载unicode编码…

物联网商机诱人 芯片商大力搭建生态系统

应用需求变化多端的物联网&#xff0c;虽具备庞大的发展潜力及应用商机&#xff0c;但由于市场过于分散&#xff0c;几乎没有杀手应用可言&#xff0c;因此对有意耕耘相关市场的半导体业者而言&#xff0c;如何借力使力&#xff0c;寻找盟友共同搭建出的生态系统&#xff0c;遂…

ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API

借助路由系统提供的请求URL模式与对应终结点之间的映射关系&#xff0c;我们可以将具有相同URL模式的请求分发给与之匹配的终结点进行处理。ASP.NET的路由是通过EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协作完成的&#xff0c;它们在ASP.NET平台上具有举足轻…

数据库(二)tab补全功能,使数据库支持简体中文,日志管理,备份脚本

一、如何在MySQL数据库中使用tab键补全功能 1.修改主配置文件/etc/my.cnf vim /etc/my.cnf [mysql] #no-auto-rehash auto-rehash 2.重启MySQL服务&#xff0c;登录测试 /etc/init.d/mysqld restart mysql -uroot -p (可在数据库中使用tab键&#xff09; 3.&#xff1b;临时支持…

php new self()关键字的用法

今天开框架源码&#xff0c;发现有用到new self()的用法 有点不懂 在网上查了一下&#xff0c;给大家说一下&#xff1a; 在类中 self的用法 和this的用法差不多 &#xff0c; php new self() 一般在类内部使用&#xff0c;作用是对自身类实例化&#xff0c;下面给个实例讲解…

android listview item置顶,ListView的item置顶

ListView的item设置置顶1.activitypublic class TopListViewActivity extends Activity {private static int ON_TOP 1;private static int CANCEL_TOP 0;public static String TOP_STATES "TOP";private ListView mListView;private List sessionList;private Se…

电信运营商x86服务器定制策略

近几年&#xff0c;伴随云计算、大数据、移动互联网、物联网等新技术从概念到实践&#xff0c;业务、用户数据海量式爆发增长&#xff0c;作为承载这些业务发展的服务器行业也面临巨大的机遇和挑战。一方面&#xff0c;需求的爆发式增长大幅提升了市场空间&#xff0c;尤其是大…

企业数字化转型服务+方案

前言&#xff1a;本文的阅读对象是公司老板、或企业高层管理者&#xff01;1【背景介绍】数字经济与实体经济深度融合是助推我国经济高质量发展的重要环节。为加快数字中国建设&#xff0c;中央和地方政府都出台各类政策扶植数字化转型相关项目。马云在接受采访时也提到&#x…

在 MongoDB 上模拟事务操作来实现支付

我们的产品叫「学海密探」&#xff0c;属于在线教育行业&#xff0c;产品需要有支付功能&#xff0c;然而支付最蛋疼是什么&#xff1f;有人会说是支付宝和微信等支付接口的接入开发&#xff01;没错&#xff0c;但支付接口的开发算是比较简单的了&#xff0c;我觉得凡是跟钱有…

Zabbix server is not running

问题描述 Dashbord中提示Zabbix server is not running 分析过程 首先查看zabbix-server的运行状态 systemctl status zabbix-server 确定是否是active(running)状态&#xff0c;如果不是&#xff0c;重启zabbix-server查看log tail -f /var/log/zabbix/zabbix_server.log 导致…

android 把异常写入到文本里,尝试在Android中将文件写入sdcard时发生FileNotFoundException(权限被拒绝)...

从标题中可以看到&#xff0c;我在Android中将文件写入sdcard时遇到问题.我想写入将在sdcard上的公共空间中的文件&#xff0c;以便任何其他应用程序都可以读取它。首先&#xff0c;我检查sdcard是否已安装&#xff1a;Environment.getExternalStorageState();然后&#xff0c;…

.NET性能优化-使用ValueStringBuilder拼接字符串

前言这一次要和大家分享的一个Tips是在字符串拼接场景使用的&#xff0c;我们经常会遇到有很多短小的字符串需要拼接的场景&#xff0c;在这种场景下及其的不推荐使用String.Concat也就是使用运算符。 目前来说官方最推荐的方案就是使用StringBuilder来构建这些字符串&#xff…

Buildroot 龙芯1C支持指南

本文转载自&#xff1a;https://github.com/pengphei/smartloong-sphinx/blob/master/source/cn/loongson1c_buildroot_guide.rst Buildroot 龙芯1C支持指南 引子&#xff1a;从龙芯1C预订拿到板子已经很长一段时间了&#xff0c;因为各种事情&#xff0c;一直让它呆在角落的冷…

STOLUCK:经济下行的当下 ,STO或将帮助中小企业度过寒冬

2018年被称为创业阵亡率特别高的一年&#xff0c;相关报道称有近20%的创业团队面临“后续融资跟不上&#xff0c;可能死在春天来临之前”的窘境。经济不景气的当下&#xff0c;上下游资金不足&#xff0c;信贷机构没钱&#xff0c;风投业捉襟见肘。实际今年3月份开始&#xff0…