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;
            }
        }
    }
}

 

 

posted @ 2013-05-15 11:06  一点风格  阅读(153)  评论(0编辑  收藏  举报