4、部门操作管理
1、基础框架准备工作
1.1 UI层建立wpf应用程序DepartmentListUI.xaml与DepartmentListEdit.xaml;Model层建立Department类, DAL层建立DepartmentDAL类。
1.2 创建数据库表
USE [HRMSYSDB] GO /****** Object: Table [dbo].[T_Department] Script Date: 05/15/2013 10:47:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[T_Department]( [Id] [uniqueidentifier] NOT NULL, [Name] [nvarchar](50) NOT NULL, [IsStopped] [bit] NOT NULL, CONSTRAINT [PK_T_Department] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
2、Model层建立Department类
与数据库表的字段对应,包括名称、类型,如数据字段为空者需要在类型后加?,因需要跨项目需要加public。
namespace HRMSys.Model { public class Department { public Guid Id { get; set; } public string Name { get; set; } public bool? IsStopped { get; set; } } }
3、DAL层建立DepartmentDAL类
namespace HRMSys.DAL { public class DepartmentDAL { private Department ToDepartment(DataRow row) { Department dep = new Department(); dep.Id =(Guid) row["Id"]; dep.Name =(string) row["Name"]; dep.IsStopped = (bool)row["IsStopped"]; return dep; } public Department[] ListAll() { DataTable dt = SqlHelper.ExecuteDataTable("select Id,Name,IsStopped from T_Department"); Department[] dep = new Department[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { dep[i] = ToDepartment(dt.Rows[i]); //DataRow row = dt.Rows[i]; //Department de = new Department(); //de.Id=(Guid) row["Id"]; //de.Name = (string)row["Name"]; //de.IsStopped = (bool)row["IsStopped"]; //dep[i] = de; } return dep; } public Department GetById(Guid id) { DataTable dt = SqlHelper.ExecuteDataTable("select Id,Name,IsStopped from T_Department where Id = @id", new SqlParameter("@id", id)); Department dept = new Department(); return ToDepartment(dt.Rows[0]); } public void Insert(Department dept) { SqlHelper.ExecuteNonQuery("insert into T_Department(Id,Name,IsStopped) values(NEWID(),@Name,@IsStopped)", new SqlParameter("@Name", dept.Name), new SqlParameter("@IsStopped", dept.IsStopped)); } public void Update(Guid id, string Name, bool? IsStopped) { SqlHelper.ExecuteNonQuery("update T_Department Name = @Name,IsStopped = @IsStopped where Id = @id", new SqlParameter("@Name", Name), new SqlParameter("@IsStopped", IsStopped), new SqlParameter("@id", id)); //SqlHelper.ExecuteNonQuery("update T_Department set Name = @Name,IsStopped = @IsStopped where Id = @id", // new SqlParameter("@Name", dept.Name), // new SqlParameter("@IsStopped", dept.IsStopped), // new SqlParameter("@Id", dept.Id)); } public void Delete(Guid id) { SqlHelper.ExecuteNonQuery("update T_Department set IsStopped = 1 where Id = @id",new SqlParameter("@id",id)); } } }
4、DepartmentListUI界面与交换
4.1 UI
<Window x:Class="HRMSys.UI.SystemMgr.DepartmentListUI" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="部门管理" Height="300" Width="350" WindowStartupLocation="CenterScreen" Icon="/images/app.ico" Loaded="Window_Loaded_1"> <Grid> <DockPanel> <ToolBar Height="30" DockPanel.Dock="Top"> <Button Name="btnAdd" Click="btnAdd_Click"> <Image Source="/images/add.ico"></Image> </Button> <Button x:Name="btnEdit" Click="btnEdit_Click"> <Image Source="/images/edit.ico"></Image> </Button> <Button x:Name="btnDelete" Click="btnDelete_Click"> <Image Source="/images/delete.ico"></Image> </Button> </ToolBar> <DataGrid DockPanel.Dock="Top" Name="gridDepartement" AutoGenerateColumns="False" IsReadOnly="True"> <DataGrid.Columns> <DataGridTextColumn Header="部门名称" Width="200" Binding="{Binding Name}"></DataGridTextColumn> <DataGridCheckBoxColumn Header="是否停用" Width="100" Binding="{Binding IsStopped}"></DataGridCheckBoxColumn> </DataGrid.Columns> </DataGrid> </DockPanel> </Grid> </Window>
4.2 交互
需要引用Model与DAL
namespace HRMSys.UI.SystemMgr { /// <summary> /// DepartmentListUI.xaml 的交互逻辑 /// </summary> public partial class DepartmentListUI : Window { public DepartmentListUI() { InitializeComponent(); } private void LoadData() { DepartmentDAL dal = new DepartmentDAL(); gridDepartement.ItemsSource = dal.ListAll(); } private void Window_Loaded_1(object sender, RoutedEventArgs e) { LoadData(); } private void btnAdd_Click(object sender, RoutedEventArgs e) { DepartmentEditUI edit = new DepartmentEditUI(); edit.IsInsert = true; if (edit.ShowDialog() == true) { LoadData(); } } private void btnEdit_Click(object sender, RoutedEventArgs e) { Department dept = (Department)gridDepartement.SelectedItem; if (dept == null) { MessageBox.Show("没有选中任何行!"); return; } DepartmentEditUI edit = new DepartmentEditUI(); edit.IsInsert = false; edit.EditingId = dept.Id; if (edit.ShowDialog() == true) { LoadData(); } } private void btnDelete_Click(object sender, RoutedEventArgs e) { Department dept = (Department)gridDepartement.SelectedItem; if (dept == null) { MessageBox.Show("没有选中任何行!"); return; } new DepartmentDAL().Delete(dept.Id); LoadData(); } } }
5、DepartmentEditiUI UI与交互
5.1 UI
<Window x:Class="HRMSys.UI.SystemMgr.DepartmentEditUI" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="部门编辑" Height="178.448" Width="285.776" Loaded="Window_Loaded_1"> <Grid> <TextBlock HorizontalAlignment="Left" Margin="43,35,0,0" TextWrapping="Wrap" Text="部门名称" VerticalAlignment="Top"/> <TextBlock HorizontalAlignment="Left" Margin="43,71,0,0" TextWrapping="Wrap" Text="是否停用" VerticalAlignment="Top" RenderTransformOrigin="0.476,2.661"/> <TextBox HorizontalAlignment="Left" Name="txtDepName" Height="23" Margin="104,32,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120"/> <CheckBox Content="停用" Name="ckBox" HorizontalAlignment="Left" Margin="110,71,0,0" VerticalAlignment="Top"/> <Button x:Name="btnOK" Content="保存" HorizontalAlignment="Left" Margin="43,104,0,0" VerticalAlignment="Top" Width="75" Click="btnOK_Click"/> <Button Content="取消" HorizontalAlignment="Left" Margin="149,104,0,0" VerticalAlignment="Top" Width="75"/> </Grid> </Window>
5.2 交互
namespace HRMSys.UI.SystemMgr { /// <summary> /// DepartmentEditUI.xaml 的交互逻辑 /// </summary> public partial class DepartmentEditUI : Window { public DepartmentEditUI() { InitializeComponent(); } public Guid EditingId { get; set; } public bool IsInsert{get;set;} private void Window_Loaded_1(object sender, RoutedEventArgs e) { if (IsInsert) { //插入数据带出默认值 } else { //更新数据 Department dept = new Department(); DepartmentDAL dal = new DepartmentDAL(); dept = dal.GetById(EditingId); txtDepName.Text = dept.Name; ckBox.IsChecked = dept.IsStopped; } } private void btnOK_Click(object sender, RoutedEventArgs e) { string name = txtDepName.Text; if (string.IsNullOrEmpty(name)) { MessageBox.Show("部门名称不能为空!"); return; } if (IsInsert) { Department dept = new Department(); dept.Name = name; dept.IsStopped = ckBox.IsChecked; new DepartmentDAL().Insert(dept); DialogResult = true; } else { //更新 Department dept = new Department(); dept.Name = name; dept.IsStopped = ckBox.IsChecked; new DepartmentDAL().Update(EditingId, txtDepName.Text,ckBox.IsChecked); DialogResult = true; } } } }