繁体   English   中英

使用DAL BLL的Windows表单

[英]Windows form using DAL BLL

我的EmployeeDB类

使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System.Text; 使用System.Data.SqlClient; 使用System.Data;

命名空间测试{公共类EmployeeDB {私有字符串connectionString;

    public EmployeeDB()
    {
        //my connectionstring info
    }

    public int CountEmployees()
    {
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("CountEmployees", con);
        cmd.CommandType = CommandType.StoredProcedure;

        try
        {
            con.Open();
            return (int)cmd.ExecuteScalar();
        }
        catch (SqlException err)
        {
            // Replace the error with something less specific.
            // You could also log the error now.
            throw new ApplicationException("Data error.");
        }
        finally
        {
            con.Close();
        }
    }

    public List<EmployeeDetails> GetEmployees()
    {
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("GetAllEmployees", con);
        cmd.CommandType = CommandType.StoredProcedure;

        // Create a collection for all the employee records.
        List<EmployeeDetails> employees = new List<EmployeeDetails>();

        try
        {
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                EmployeeDetails emp = new EmployeeDetails(
                    (int)reader["EmployeeID"], (string)reader["FirstName"],
                    (string)reader["LastName"], (string)reader["TitleOfCourtesy"]);
                employees.Add(emp);
            }
            reader.Close();

            return employees;
        }
        catch (SqlException err)
        {
            // Replace the error with something less specific.
            // You could also log the error now.
            throw new ApplicationException("Data error.");
        }
        finally
        {
            con.Close();
        }
    }
}

}

我的employeeDetails类

  using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace Test
{
    public class EmployeeDetails
    {
private int employeeID;
        private string firstName;
        private string lastName;
        private string titleOfCourtesy;

        public int EmployeeID
        {
            get {return employeeID;}
            set {employeeID = value;}
        }
        public string FirstName
        {
            get {return firstName;}
            set {firstName = value;}
        }
        public string LastName
        {
            get {return lastName;}
            set {lastName = value;}
        }
        public string TitleOfCourtesy
        {
            get {return titleOfCourtesy;}
            set {titleOfCourtesy = value;}
        }

        public EmployeeDetails(int employeeID, string firstName, string lastName,
            string titleOfCourtesy)
        {
            this.employeeID = employeeID;
            this.firstName = firstName;
            this.lastName = lastName;
            this.titleOfCourtesy = titleOfCourtesy;
        }

        public EmployeeDetails(){}

    }
}

然后,我建立类库并将引用添加到Windows窗体项目中。

这是该类显示的主要表格的屏幕截图,但是没有方法。 在此处输入图片说明

绑定到DataGrid:

  1. 将BindingSource(bindingSource)添加到窗体
  2. 将DataGrid的DataSource属性设置为bindingSource
  3. 将bindingSource的DataSource属性设置为GetEmployees()的结果

如果您的库具有以下实现,例如:

public interface IDataOperation
{
    List<Employee> GetEmployees();
}

public class DataOperation : IDataOperation
{
    public List<Employee> GetEmployees(){}
}

您的实现应如下所示:

IDataOperation dataOperation = new DataOperation();

var bindingSource = new BindingSource();
dataGrid.DataSource = bindingSource;
bindingSource.DataSource = dataOperation.GetEmployees();

或者,您可以简单地以编程方式将DataGrid的DataSource属性设置为GetEmployees()的结果,而无需使用BindingSource:

dataGrid.DataSource = dataOperation.GetEmployees();

编辑:在您的屏幕快照中,您应该像下面的代码一样使用它之前实例化EmployeeDB:

Test.EmployeeDB employeeDB = new Test.EmployeeDB();
dataGrid.DataSource = employeeDB.GetEmployees(); // assuming you have a dataGrid control

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM