仓库管理系统17--客户管理

原创不易,打字不易,截图不易,多多点赞,送人玫瑰,留有余香,财务自由明日实现 

 

1、添加用户控件 

<UserControl x:Class="West.StoreMgr.View.CustomerView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:West.StoreMgr.View"
             mc:Ignorable="d" 
             DataContext="{Binding Source={StaticResource Locator},Path=Customer}"
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <!--标题-->
        <StackPanel Background="#EDF0F6" Orientation="Horizontal">
            <TextBlock Margin="10 0 0 0" Text="&#xf015;" FontSize="20" FontFamily="/Fonts/#FontAwesome" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#797672"/>
            <TextBlock Margin="10 0 0 0" Text="首页 > 客户管理" FontSize="20" FontFamily="/Fonts/#FontAwesome" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#797672"/>
        </StackPanel>

        <!--增加-->
        <Grid Grid.Row="1" Margin="10">
            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Border Background="#72BBE5">
                <TextBlock Text="添加客户" FontSize="18" VerticalAlignment="Center" Foreground="#1F3C4C" Margin="0 0 10 0"/>
            </Border>
            <StackPanel Grid.Row="1">
                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
                    <TextBlock Margin="0 0 10 0" Text="客户名称:" VerticalAlignment="Center"/>
                    <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="230" Height="30" />
                    <TextBlock Margin="0 0 10 0" Text="备注:" VerticalAlignment="Center"/>
                    <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Tag,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="400" Height="30" />
                </StackPanel>
                <StackPanel Orientation="Horizontal" Margin="0 10 0 10">
                    <TextBlock Margin="0 0 10 0" Text="电话号码:" VerticalAlignment="Center"/>
                    <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Telephone,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="120" Height="30" />
                    <TextBlock Margin="0 0 10 0" Text="邮箱:" VerticalAlignment="Center"/>
                    <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Email,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="150" Height="30" />
                    <TextBlock Margin="0 0 10 0" Text="地址:" VerticalAlignment="Center"/>
                    <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Address,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="315" Height="30" />
                </StackPanel>
                <StackPanel Orientation="Horizontal" Margin="200 10 0 10"  >
                    <Button Margin="18 0 0 0" Height="36" Width="199" FontSize="20" 
                    Content="增 加" Style="{StaticResource ButtonStyle}" 
                    CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:GoodsTypeView}}"
                    Command="{Binding AddCommand}"/>
                </StackPanel>
            </StackPanel> 
        </Grid>

        <!--浏览-->
        <Grid Grid.Row="2" Margin="10 0 10 10">
            <DataGrid ItemsSource="{Binding CustomerList}" CanUserAddRows="False" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="序号" Binding="{Binding Id}"/>
                    <DataGridTextColumn Header="名字" Binding="{Binding Name}"/>
                    <DataGridTextColumn Header="电话" Binding="{Binding Telephone}"/>
                    <DataGridTextColumn Header="邮箱" Binding="{Binding Email}"/>
                    <DataGridTextColumn Header="地址" Binding="{Binding Address}"/>
                    <DataGridTextColumn Header="备注" Binding="{Binding Tag}"/>
                    <DataGridTextColumn Header="日期" Binding="{Binding InsertDate}"/>
                    <DataGridTemplateColumn  Header="操作">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Button Content="编辑" 
                                            Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:CustomerView},Path=DataContext.EditCommand}"
                                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}}" 
                                            Tag="{Binding}" 
                                            Style="{StaticResource DataGridButtonStyle}" />
                                    <Button Content="删除" 
                                            Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:CustomerView},Path=DataContext.DeleteCommand}"
                                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}}"
                                            Tag="{Binding}" 
                                            Style="{StaticResource DataGridButtonStyle}" />
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Grid>
</UserControl>

2、添加viewmodel

 

using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using West.StoreMgr.Service;
using CommonServiceLocator;
using West.StoreMgr.Helper;
using static West.StoreMgr.Windows.MsgBoxWindow;
using West.StoreMgr.Windows;

namespace West.StoreMgr.ViewModel
{
    /// <summary>
    /// 客户管理viewmodel
    /// </summary>
    public class CustomerViewModel : ViewModelBase
    {
        public CustomerViewModel()
        {
            CustomerList = new CustomerService().Select();
        }
        private Customer customer = new Customer();
        public Customer Customer
        {
            get { return customer; }
            set { customer = value; RaisePropertyChanged(); }
        }

        private List<Customer> customerList = new List<Customer>();
        /// <summary>
        /// 客户列表
        /// </summary>
        public List<Customer> CustomerList
        {
            get { return customerList; }
            set { customerList = value; RaisePropertyChanged(); }
        }

        //增加
        public RelayCommand<UserControl> AddCommand
        {
            get
            {
                var command = new RelayCommand<UserControl>((view) =>
                {
                    if (string.IsNullOrEmpty(Customer.Name) == true)
                    {
                        MsgWinHelper.ShowError("不能为空");
                        return;
                    }

                    Customer.InsertDate = DateTime.Now;

                    CustomerService service = new CustomerService();
                    int count = service.Insert(Customer);
                    if (count > 0)
                    {
                        CustomerList = service.Select();
                        MsgWinHelper.ShowMessage("操作成功");
                        Customer = new Customer();
                    }
                    else
                    {
                        MsgWinHelper.ShowError("操作失败");
                    }
                });

                return command;
            }
        }

        //修改
        public RelayCommand<Button> EditCommand
        {
            get
            {
                var command = new RelayCommand<Button>((view) =>
                {
                    var old = view.Tag as Customer;
                    if (old == null) return;
                    var model = ServiceLocator.Current.GetInstance<EditCustomerViewModel>();
                    model.Customer = old;
                    var window = new EditCustomerWindow();
                    window.ShowDialog();
                    CustomerList = new CustomerService().Select();
                });

                return command;
            }
        }

        //删除
        public RelayCommand<Button> DeleteCommand
        {
            get
            {
                var command = new RelayCommand<Button>((view) =>
                {
                    if (MsgWinHelper.ShowQuestion("您确定要删除该客户吗?") == CustomMessageBoxResult.OK)
                    {
                        var old = view.Tag as Customer;
                        if (old == null) return;

                        CustomerService service = new CustomerService();
                        int count = service.Delete(old);
                        if (count > 0)
                        {
                            CustomerList = service.Select();
                            MsgWinHelper.ShowMessage("操作成功");
                        }
                        else
                        {
                            MsgWinHelper.ShowError("操作失败");
                        }
                    }
                });

                return command;
            }
        }
    }
}

3、修改客户窗体

<Window x:Class="West.StoreMgr.Windows.EditCustomerWindow"
        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:West.StoreMgr.Windows"
        mc:Ignorable="d"
        DataContext="{Binding Source={StaticResource Locator},Path=EditCustomer}"
        Title="修改客户窗体" Height="320" Width="700">
    <Grid Background="#E4ECEF">

        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="100"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Border Background="#72BBE5" Grid.Row="0"  Margin="0">
            <TextBlock Text="修改客户数据" FontSize="18" VerticalAlignment="Center" Foreground="#1F3C4C" Margin="0 0 10 0"/>
        </Border>
        <StackPanel Grid.Row="1" Margin="0 10 0 0">
            <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
                <TextBlock Margin="0 0 10 0" Text="客户名称:" VerticalAlignment="Center"/>
                <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="220" Height="30" />
                <TextBlock Margin="0 0 10 0" Text="备注:" VerticalAlignment="Center"/>
                <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Tag,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="354" Height="30" />
            </StackPanel>
            <StackPanel Orientation="Horizontal" Margin="0 10 0 10">
                <TextBlock Margin="0 0 10 0" Text="电话号码:" VerticalAlignment="Center"/>
                <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Telephone,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="130" Height="30" />
                <TextBlock Margin="0 0 10 0" Text="邮箱:" VerticalAlignment="Center"/>
                <TextBox HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Email,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="160" Height="30" />
                <TextBlock Margin="0 0 10 0" Text="地址:" VerticalAlignment="Center"/>
                <TextBox  HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Left" VerticalContentAlignment="Center" Margin="0 0 10 0" Text="{Binding Customer.Address,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="240" Height="30" />
            </StackPanel>
        </StackPanel>
        <StackPanel Grid.Row="2" Margin="0 10 0 0">
            <Button Margin="18 -10 0 0" Height="36" Width="199"  FontSize="20"
            Content="修 改" Style="{StaticResource ButtonStyle}" 
            CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:EditCustomerWindow}}"
            Command="{Binding EditCommand}"/>
        </StackPanel>
    </Grid>
</Window>

4、运行效果

 

 

 

原创不易,打字不易,截图不易,多多点赞,送人玫瑰,留有余香,财务自由明日实现。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

镭速是如何做到对涉密文件进行大数据迁移的?

随着公司业务的扩展和技术创新&#xff0c;企业经常需要在不同的系统和云服务之间转移庞大的数据量&#xff0c;以适应业务需求和提高资源使用效率。但这一过程中&#xff0c;安全问题尤为突出&#xff0c;成为IT部门的首要挑战。 本文将探讨在大规模数据迁移中可能遇到的安全风…

C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量

C语言入门课程学习笔记8 第36课 - 变量的作用域与生命期&#xff08;上&#xff09;第37课 - 变量的作用域与生命期&#xff08;下&#xff09;实验—局部变量的作用域实验-变量的生命期 第38课 - 函数专题练习第39课 - 递归函数简介实验-递归小结 第40课 - C 语言中的宏定义实…

陶瓷化聚烯烃研究逐渐增多 行业即将进入规模化生产阶段

陶瓷化聚烯烃研究逐渐增多 行业即将进入规模化生产阶段 陶瓷化聚烯烃是一种陶瓷化高分子材料&#xff0c;同时也是一种防火阻燃复合材料&#xff0c;主要由聚烯烃&#xff08;作为基材&#xff09;、成瓷填料&#xff08;如无机硅酸盐等&#xff09;、助熔剂、补强剂&#xff0…

MySQL之覆盖索引

什么是覆盖索引&#xff1f; 覆盖索引&#xff1a;查询时使用了索引&#xff0c;且需要返回的列&#xff0c;在改索引中已经全部能找到。 示例&#xff1a;有user表如下&#xff1a; CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 技术主键,name varch…

数据中心网络100GbE发展趋势

100G光产品的技术突破不断满足超大规模数据中心的需求。5G的发展使许多行业能够实现高数据吞吐量和低延迟。从2017年至今&#xff0c;不少企业已经升级到100G数据中心网络&#xff0c;进而追求400G/800G网络。与此同时&#xff0c;其他小型数据中心已逐渐升级至100G。 是什么推…

大数据开发如何管理项目

在面试的时候总是 会问起项目&#xff0c;那在大数据开发的实际工作中&#xff0c;如何做好一个项目呢&#xff1f; 目录 1. 需求分析与项目规划1.1 需求收集与梳理1.2 可行性分析1.3 项目章程与计划 2. 数据准备与处理2.1 数据源接入2.2 数据仓库建设2.3 数据质量管理 3. 系统…

Sorting

本节提供有关在数据网格中对数据进行排序的信息。 GridControl-Grid View Sort Data 默认情况下&#xff0c;最终用户可以按任何列对数据进行排序&#xff0c;但使用MemoExEdit、ImageEdit和PictureEdit在位编辑器的列除外。在运行时&#xff0c;单击列标题一次以升序排列数…

模版总结小全

BFS 最短步数问题 #include<iostream> #include<queue> #include<cstring> using namespace std;const int N 50; char g[N][N],d[N][N]; int dx[] {-1,0,1,0}; int dy[] {0,1,0,-1}; int n,m;int bfs(int x,int y){queue<pair<int,int> > q…

【Kubernetes】搭建工具Kubeadm环境配置

架构&#xff1a;服务器采用Master-nodes&#xff08;3台&#xff09; Worker-nodes(2台) 一&#xff0c;服务准备工作 &#xff08;1&#xff09;在所有&#xff08;5台&#xff09;机器配置 主机名绑定&#xff0c;如下&#xff1a; cat /etc/hosts192.168.0.100 k8s-m…

短剧App开发的全攻略

短剧App开发的全攻略可以概括为以下几个关键步骤&#xff1a; 1、市场调研与需求分析 进行市场调研&#xff0c;研究目标用户群体&#xff0c;了解他们的需求和偏好。 观察竞争对手的App&#xff0c;分析他们的优点和缺点&#xff0c;以此为基础来制定自己的开发计划。 确定App…

【计算机网络】期末复习(2)

目录 第一章&#xff1a;概述 第二章&#xff1a;物理层 第三章&#xff1a;数据链路层 第四章&#xff1a;网络层 第五章&#xff1a;传输层 第一章&#xff1a;概述 三大类网络 &#xff08;1&#xff09;电信网络 &#xff08;2&#xff09;有线电视网络 &#xff0…

c++用什么软件编程?都有哪些?

c用什么软件编程&#xff1f;都有哪些&#xff1f; C 作为一种高效、面向对象的编程语言&#xff0c;广泛应用于软件开发、游戏开发、嵌入式系统等领域。那么在进行 C 编程时&#xff0c;我们通常会使用哪些软件呢&#xff1f;下面就来具体分析。 1. Visual Studio Visual Stu…

Autoware 学习

Autoware不同版本介绍 Autoware官方说明文档&#xff1a;https://autowarefoundation.github.io/autoware-documentation/main 使用ROS2和Autoware的自动驾驶汽车免费在线进阶课 译 https://bbs.huaweicloud.com/blogs/detail/283058 Autoware.AI 第一个基于 ROS 1 发布的 Au…

字节流和字符流的相关知识

目录 1. Writer1.1 写两行数据1.2 换一种方式1.3 追加数据1.4 写很多数据&#xff0c;记得要清一下缓存1.5 用数组、字符串写入 2. Reader2.1 读个文件2.2 读取字符2.3 读取数据到数组2.4 复制文件 3. InputStream4. OutputStream5. 参考链接 1. Writer Writer类是Java.io包中…

springcloud第4季 springcloud-alibaba之nacos+openfegin+gateway+sentinel熔断限流【经典案例】

一 说明 1.1 架构说明 本案例实现原理&#xff1a; 采用alibaba的nacos&#xff0c;openfegin&#xff0c;sentinel&#xff0c;gateway等组件实现熔断限流。 主要理解sentinel的ResouceSentinel和fallback的区别联系。 ResourceSentinel 主要是页面配置熔断限流规则&#…

python-20-零基础自学python-用类和while设计一个掷多次、多面骰子的工具的基础

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a;类、random、while循环、把while循环和类结合起来 练习内容&#xff1a; 练习9-13&#xff1a;骰子 创建一个Die类&#xff0c;它包含一个名为sides的属性&#xff0c;该属性的默认值…

open-chat-video-editor:开源短视频生成和编辑工具,以及抖音|TikTok 的移动端短视频项目

open-chat-video-editor&#xff1a;开源短视频生成和编辑工具&#xff0c;以及抖音|TikTok 的移动端短视频项目。 open-chat-video-editor&#xff1a;开源短视频生成和编辑工具 简介 Open Chat Video Editor是开源的短视频生成和编辑工具&#xff0c;整体技术框架如下&…

《昇思25天学习打卡营第11天 | 昇思MindSpore基于 MindSpore 实现 BERT 对话情绪识别》

11天本节学习到BERT全称是来自变换器的双向编码器表征量&#xff0c;它是Google于2018年末开发并发布的一种新型语言模型。BERT模型的主要创新点都在pre-train方法上&#xff0c;即用了Masked Language Model和Next Sentence Prediction两种方法分别捕捉词语和句子级别的repres…

Qt WPS(有源码)

项目源码地址&#xff1a;WPS完整源码 一.项目详情 该项目仿照WPS&#xff0c;实现了部分的功能&#xff0c;能够很方便对文本和HTML进行修改&#xff0c;并且有打印功能&#xff0c;可以很方便的生成PDF。 应用界面 项目架构分析 这个项目主要可分为两个部分&#xff0c;一…

长鑫存储母公司斥资24亿美元发展国产HBM

国产DRAM厂商长鑫存储母公司睿力集成计划投资24亿美元在上海建一座高端封装工厂。据报道&#xff0c;该工厂将专注于高带宽存储器&#xff08;HBM&#xff09;芯片的封装&#xff0c;预计到2026年中开始投入生产。长鑫存储将利用来自多方投资者的资金进行建设&#xff0c;其中包…