想做外贸去哪个网站做成人本科
目录
- 页面代码
- 后台代码
- 动态生成按钮主要代码:
如下图,可编辑的DataGrid,如果有操作按钮,则最后一行会异常出现按钮;解决办法就是让代码动态生成按钮;
页面代码
<Page x:Class="WpfSnqkGasAnalysis.PageUser"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:WpfSnqkGasAnalysis.Model;assembly=WpfSnqkGasAnalysis.Model" xmlns:local1="clr-namespace:WpfSnqkGasAnalysis"mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"Title="PageUser" Loaded="Page_Loaded"><Page.Resources><local1:ImgShowConvert x:Key="imgShow"></local1:ImgShowConvert> <local1:CheckNullConvert x:Key="accountIsReadOnly" /></Page.Resources><Grid Margin="10"> <Grid.RowDefinitions><RowDefinition Height="60" ></RowDefinition><RowDefinition Height="*"></RowDefinition></Grid.RowDefinitions><DockPanel LastChildFill="False" Grid.Row="0"><Label Content="账号:" Style="{StaticResource Label1}" /><TextBox x:Name="txtAccount" Text="" Style="{StaticResource input1}" Margin="0,0,20,0" /><Button x:Name="btnSearch" Content="查询" Style="{StaticResource buttonBlue}" HorizontalAlignment="Left" VerticalAlignment="Center" Click="btnSearch_Click"/></DockPanel><Grid Grid.Row="1" ><DataGrid x:Name="dgUser" ItemsSource="{Binding }" Style="{StaticResource DataGrid1}" ColumnHeaderStyle="{StaticResource DataGrid1_header}" RowHeaderWidth="0" BorderBrush="#D3D3D3" BorderThickness="1,0,0,0" AutoGenerateColumns="False" SelectionUnit="Cell" CanUserAddRows="True" CellEditEnding="dgUser_CellEditEnding" ><DataGrid.Columns><DataGridTextColumn ElementStyle="{StaticResource dataGridColumn}" Width="150" Header="账号" Binding="{Binding Account }" IsReadOnly="{Binding Path=Account,Converter={StaticResource accountIsReadOnly}}" ></DataGridTextColumn><DataGridTextColumn ElementStyle="{StaticResource dataGridColumn}" Width="100" Header="姓名" Binding="{Binding Realname,Mode=TwoWay}"></DataGridTextColumn><!--<DataGridComboBoxColumn Width="200" Header="角色" TextBinding="{Binding Role_id,Mode=TwoWay }" ItemsSource="{x:Static local:CommonConfig.RoleList }" SelectedItemBinding="{Binding Role_id,UpdateSourceTrigger=PropertyChanged}" />--><!--<DataGridCheckBoxColumn Width="90" Header="是否启用" Binding="{Binding Dstat,Mode=TwoWay}" ></DataGridCheckBoxColumn>--><DataGridTemplateColumn Header="是否启用" Width="90"><DataGridTemplateColumn.CellTemplate><DataTemplate><StackPanel Loaded="CheckStackPanel_Loaded" Tag="{Binding Dstat}" Orientation="Horizontal" Style="{StaticResource StackPanel_buttonSpance}"></StackPanel></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Header="电子签名" ><DataGridTemplateColumn.CellTemplate><DataTemplate> <Image Source="{Binding SignatureImgPath,Converter={StaticResource imgShow} }" MaxHeight="60" ></Image></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTextColumn ElementStyle="{StaticResource dataGridColumn}" Width="100" Header="备注" Binding="{Binding Remark,Mode=TwoWay}"></DataGridTextColumn><DataGridTemplateColumn Header="操作" Width="*"><DataGridTemplateColumn.CellTemplate><DataTemplate><StackPanel Name="btnList" Loaded="btnList_Loaded" Tag="{Binding Id}" Orientation="Horizontal" Style="{StaticResource StackPanel_buttonSpance}"><!--<TextBlock Text="{Binding Id}" Background="#D77DE1" Padding="10,2"></TextBlock>--><!--<Button Name="btnEdit" Tag="{Binding Id}" HorizontalAlignment="Left" Visibility="{Binding Id, ConverterParameter=99, Converter={StaticResource lastRowC} }" VerticalAlignment="Center" Content="上传电子签名" Click="BtnImgName_Click" /><Button Name="btnPasswordReset" Tag="{Binding Id}" HorizontalAlignment="Left" Visibility="{Binding Id, ConverterParameter=99, Converter={StaticResource lastRowC} }" VerticalAlignment="Center" Content="重置密码" Click="ResetPassword_Click" /><Button Name="btnDel" HorizontalAlignment="Left" VerticalAlignment="Center" Content="删除" Visibility="{Binding Id, ConverterParameter=99, Converter={StaticResource lastRowC} }" Click="del_Click" />--></StackPanel></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid></Grid></Grid>
</Page>
后台代码
using Microsoft.VisualBasic.ApplicationServices;
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.Controls.Primitives;
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;
using WpfRepairProject.IBLL;
using WpfRepairProject.IData;
using WpfRepairProject.Model;
using WpfSnqkGasAnalysis.IBusiness_impl;
using WpfSnqkGasAnalysis.Model;namespace WpfSnqkGasAnalysis
{/// <summary>/// PageUser.xaml 的交互逻辑,账号管理/// </summary>public partial class PageUser : Page{public PageUser(){InitializeComponent();}//UserBusiness userBusiness = new UserBusiness();readonly IK_userDAL userDAL = ServicesRepairHelpter.GetService<IK_userDAL>();readonly IUserBLL userBLL = ServicesRepairHelpter.GetService<IUserBLL>();private void Page_Loaded(object sender, RoutedEventArgs e){//dgUservar list = userDAL.GetListAll();if (list?.Count > 0){foreach (var item in list){item.Dstat = item.U_stat == 1 ? true : false;}}dgUser.ItemsSource = list;// dgUser.//dgUser.//dgUser.row}//回车键提交,或者鼠标点击其他单元格private void dgUser_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e){var user = e.Row.Item as K_user;object selectedValue = null;if (e.EditingElement is TextBox){selectedValue = ((System.Windows.Controls.TextBox)e.EditingElement).Text;}List<string> updateColumns = new List<string>();//账号。if (e.Column.SortMemberPath.Equals("Account")){user.Account = selectedValue.ToString();updateColumns.Add("Account");}else if (e.Column.SortMemberPath.Equals("Realname")){user.Realname = selectedValue.ToString();updateColumns.Add("Realname");}//角色else if (e.Column.SortMemberPath.Equals("User_role_id")){var selectedValue1 = ((System.Windows.Controls.Primitives.Selector)e.EditingElement).SelectedValue as string;user.User_role_id = selectedValue1.ToMyInt64();updateColumns.Add("User_role_id");}//备注else if (e.Column.SortMemberPath.Equals("Remark")){user.Remark = selectedValue.ToString();updateColumns.Add("Remark");}//状态else if (e.Column.SortMemberPath.Equals("Dstat")){bool? check = ((System.Windows.Controls.Primitives.ToggleButton)e.EditingElement).IsChecked;user.U_stat = 2;if (check != null){user.U_stat = check.Value ? 1 : 2;}updateColumns.Add("U_stat");}if (selectedValue == null || string.IsNullOrEmpty(selectedValue.ToString())){return;}if (user.Id == 0){//新增一个人。//添加时间:2022-12-6 17:35:58K_user userInfo = new K_user();userInfo.Account = selectedValue.ToString();var addResult = userBLL.Add(userInfo);btnSearch_Click(sender, new RoutedEventArgs());//刷新列表数据ShowAlertHelpter.ShowAlert(addResult.Msg);}else{if (updateColumns.Count == 1 && updateColumns.First() == "Account"){ShowAlertHelpter.ShowAlert("账号不允许修改");btnSearch_Click(sender, new RoutedEventArgs());//刷新列表数据return;}//修改,保存var result = userBLL.Update(user, updateColumns);if (result.Code == ResultCode.Success.ToMyInt64()){btnSearch_Click(sender, new RoutedEventArgs());//刷新列表数据}ShowAlertHelpter.ShowAlert(result.Msg);}}//搜索private void btnSearch_Click(object sender, RoutedEventArgs e){var list = userDAL.GetListAll();var listResult = list.Where(g => g.Account.Contains(txtAccount.Text.Trim())).ToList();if (listResult?.Count > 0){foreach (var item in listResult){item.Dstat = item.U_stat == 1 ? true : false;}}//必须要List,否则不能编辑单元格dgUser.ItemsSource = listResult;dgUser.UpdateLayout();}//上传签名private void BtnImgName_Click(object sender, RoutedEventArgs e){Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();ofd.Filter = "image|*.png";if ((bool)ofd.ShowDialog()){//保存图片string dir = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, CommonConfig.UploadImgSavePath);if (!System.IO.Directory.Exists(dir)){System.IO.Directory.CreateDirectory(dir);}string file = DateTime.Now.Ticks + ".png";string fileSavePath = System.IO.Path.Combine(dir, file);var buffer = System.IO.File.ReadAllBytes(ofd.FileName);System.IO.File.WriteAllBytes(fileSavePath, buffer);//当前人,修改签名string relativePath = System.IO.Path.Combine(CommonConfig.UploadImgSavePath, file);//Login_user login_User = this.dgUser.SelectedItem as Login_user;var button = sender as Button;if (button != null){long id = (long)button.Tag.ToMyInt64();var user = userDAL.Get(id);if (user == null){ShowAlertHelpter.ShowAlert("没找到用户");}user.SignatureImgPath = relativePath;var taskUpdate = userDAL.UpdateAsync(user, new string[] { "SignatureImgPath" });int count = taskUpdate.Result;IResult result = new Result("签名图片保存失败");if (count > 0){result = new ResultSuccess();}if (result.Code == (int)ResultCode.Success){btnSearch_Click(sender, e);//刷新列表数据ShowAlertHelpter.ShowAlert("签名图片保存成功");}else{ShowAlertHelpter.ShowAlert(result.Msg);}}}}//重置密码 //添加时间:2023-1-10 10:17:37。作者:王浩力private void ResetPassword_Click(object sender, RoutedEventArgs e){WindowUserResetPassword windowUserReset = new WindowUserResetPassword();windowUserReset.selectedUser = this.dgUser.CurrentItem as K_user;windowUserReset.ShowDialog();}//删除用户private async void del_Click(object sender, RoutedEventArgs e){var user = ((System.Windows.FrameworkElement)sender).DataContext as K_user;if (user == null){e.Handled = true;return;}if (MessageBox.Show($"确认删除`{user.Account}`吗?", "删除提示", MessageBoxButton.YesNo) == MessageBoxResult.No){e.Handled = true;return;}int count = await userDAL.DeleteByPrimaryKeyAsync(user.Id);if (count > 0){ShowAlertHelpter.ShowAlert("删除成功");btnSearch_Click(sender, e);//刷新列表数据}}//按钮的StackPanel加载完成private void btnList_Loaded(object sender, RoutedEventArgs e){//ShowAlertHelpter.ShowAlert("按钮容器加载完成");var conqi = sender as StackPanel;if (conqi == null || conqi.Tag == null || conqi.Tag.ToString() == "0"){return;}var row = conqi.Parent;Button button = new Button();button.Content = "重置密码";button.Click += ResetPassword_Click;button.Tag = conqi.Tag;conqi.Children.Add(button);Button button2 = new Button();button2.Content = "上传电子签名";button2.Click += BtnImgName_Click;button2.Tag = conqi.Tag;conqi.Children.Add(button2);Button button3 = new Button();button3.Content = "删除";button3.Click += del_Click;button3.Tag = conqi.Tag;conqi.Children.Add(button3);}//动态绑定checkboxprivate void CheckStackPanel_Loaded(object sender, RoutedEventArgs e){var conqi = sender as StackPanel;if (conqi == null || conqi.Tag == null){return;}CheckBox checkBox = new CheckBox();checkBox.IsChecked = (bool)conqi.Tag;checkBox.Click += (o, e) =>{var zuj = o as CheckBox;var user = zuj.DataContext as K_user;if (user == null){return;}if (MessageBox.Show($"确认修改用户`{user.Account}`状态吗", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK){btnSearch_Click(sender, new RoutedEventArgs());//刷新列表数据return;}user.U_stat = 1;if (zuj.IsChecked != null){user.U_stat = zuj.IsChecked.Value ? 1 : 2;}//修改,保存var result = userBLL.Update(user, new List<string> { "U_stat" });if (result.Code == ResultCode.Success.ToMyInt64()){btnSearch_Click(sender, new RoutedEventArgs());//刷新列表数据}ShowAlertHelpter.ShowAlert(result.Msg);};conqi.Children.Add(checkBox);}}
}
动态生成按钮主要代码:
//按钮的StackPanel加载完成private void btnList_Loaded(object sender, RoutedEventArgs e){//ShowAlertHelpter.ShowAlert("按钮容器加载完成");var conqi = sender as StackPanel;if (conqi == null || conqi.Tag == null || conqi.Tag.ToString() == "0"){return;}var row = conqi.Parent;Button button = new Button();button.Content = "重置密码";button.Click += ResetPassword_Click;button.Tag = conqi.Tag;conqi.Children.Add(button);Button button2 = new Button();button2.Content = "上传电子签名";button2.Click += BtnImgName_Click;button2.Tag = conqi.Tag;conqi.Children.Add(button2);Button button3 = new Button();button3.Content = "删除";button3.Click += del_Click;button3.Tag = conqi.Tag;conqi.Children.Add(button3);}