Невозможно обновить DataGrid со значениями ComboBox в C # с помощью SQL Update Query - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь внести изменения в значения Data-Grid с помощью «запроса UPDATE», но по какой-то причине я не могу обновить поле со списком.

Обновление других полей работает нормально, и я не получаю сообщение об ошибке.

Я использую 3-уровневую архитектуру с хранимыми процедурами, чтобы данные передавались из моей базы данных через 2 класса, пока не достигли моего класса формы для представления пользователю.

Вот мой запрос UPDATE:

ALTER PROCEDURE [dbo].[us_ChangeProject] 

@ProjectID varchar(10),
@ProjectTitle varchar(50),
@ProjectDescription nvarchar(50),
@ProjectStartDate smalldatetime,
@ProjectDueDate smalldatetime,
@ProjectOwner nvarchar(10),
@SupervisorID varchar(10),
@ProjectStatus nvarchar(10)

 UPDATE  ProjectTable
 SET  ProjectTitle = @ProjectTitle, ProjectDescription = 
 @ProjectDescription,ProjectStartDate = @ProjectStartDate, 
 ProjectDueDate = @ProjectDueDate,ProjectOwner = @ProjectOwner, 
 SupervisorID = @SupervisorID, ProjectStatus = @ProjectStatus 
 WHERE ProjectID = @ProjectID

Метод уровня доступа к данным, который вызывает хранимые процедуры:

public DataTable GetAllProjects()
    {
        DataTable dtProjects = new DataTable();
        string sqlinsert = "SELECT * FROM ProjectTable";

        using (var dbConn = new SqlConnection("Data Source=ZEUS\\MSSQLSERVERDEV;Initial Catalog=Project;Integrated Security=True"))
        {
            using (var dbCmd = new SqlCommand(sqlinsert, dbConn))
            {
                using (var dbAdapter = new SqlDataAdapter(dbCmd))
                {
                    dbAdapter.Fill(dtProjects);

                    return dtProjects;
                }
            }
        }

    }

    public DataTable GetAllStudentNames()
    {
        DataTable dtStudents = new DataTable();
        string sqlinsert = "us_GetAllStudentNames";

        using (var dbConn = new SqlConnection("Data Source=ZEUS\\MSSQLSERVERDEV;Initial Catalog=Project;Integrated Security=True"))
        {
            using (var dbCmd = new SqlCommand(sqlinsert, dbConn))
            {
                using (var dbAdapter = new SqlDataAdapter(dbCmd))
                {                        
                    dbAdapter.Fill(dtStudents);

                    return dtStudents;
                }
            }
        }

    }

    public DataTable GetAllSupervisorNames()
    {
        DataTable dtSupervisors = new DataTable();
        string sqlinsert = "us_GetAllSupervisorNames";

        using (var dbConn = new SqlConnection("Data Source=ZEUS\\MSSQLSERVERDEV;Initial Catalog=Project;Integrated Security=True"))
        {
            using (var dbCmd = new SqlCommand(sqlinsert, dbConn))
            {
                using (var dbAdapter = new SqlDataAdapter(dbCmd))
                {                        
                    dbAdapter.Fill(dtSupervisors);

                    return dtSupervisors;
                }
            }
        }

    }
    public int InsertProject(string projectID, string projectTitle, string projectDescription, string projectStartDate, string projectDueDate, string projectOwner, string projectSupervisor, string projectStatus)
     {        

        string sqlinsert = "us_InsertProject";

        using (var dbConn = new SqlConnection("Data Source=ZEUS\\MSSQLSERVERDEV;Initial Catalog=Project;Integrated Security=True"))
        {
            using (var dbCmd = new SqlCommand(sqlinsert, dbConn))
            {

                dbCmd.CommandType = CommandType.StoredProcedure;

                dbCmd.Parameters.Add("@ProjectID", SqlDbType.VarChar).Value = projectID;
                dbCmd.Parameters.Add("@ProjectTitle", SqlDbType.VarChar).Value = projectTitle;
                dbCmd.Parameters.Add("@ProjectDescription", SqlDbType.NVarChar).Value = projectDescription;
                dbCmd.Parameters.Add("@ProjectStartDate", SqlDbType.SmallDateTime).Value = projectStartDate;
                dbCmd.Parameters.Add("@ProjectDueDate", SqlDbType.SmallDateTime).Value = projectDueDate;
                dbCmd.Parameters.Add("@ProjectOwner", SqlDbType.NVarChar).Value = projectOwner;
                dbCmd.Parameters.Add("@SupervisorID", SqlDbType.VarChar).Value = projectSupervisor;
                dbCmd.Parameters.Add("@ProjectStatus", SqlDbType.NVarChar).Value = projectStatus;

                dbConn.Open();

                int x = dbCmd.ExecuteNonQuery();
                return x;
            }
        }

    }

public int ChangeProject(string projectID, string projectTitle, string projectDescription, string projectStartDate, string projectDueDate, string projectOwner, string projectSupervisor, string projectStatus)
    {
        string sqlinsert = "us_ChangeProject";

        using (var dbConn = new SqlConnection("Data Source=ZEUS\\MSSQLSERVERDEV;Initial Catalog=Project;Integrated Security=True"))
        {
            using (var dbCmd = new SqlCommand(sqlinsert, dbConn))
            {

                dbCmd.CommandType = CommandType.StoredProcedure;

                dbCmd.Parameters.Add("@ProjectID", SqlDbType.VarChar).Value = projectID;
                dbCmd.Parameters.Add("@ProjectTitle", SqlDbType.VarChar).Value = projectTitle;
                dbCmd.Parameters.Add("@ProjectDescription", SqlDbType.NVarChar).Value = projectDescription;
                dbCmd.Parameters.Add("@ProjectStartDate", SqlDbType.SmallDateTime).Value = projectStartDate;
                dbCmd.Parameters.Add("@ProjectDueDate", SqlDbType.SmallDateTime).Value = projectDueDate;
                dbCmd.Parameters.Add("@ProjectOwner", SqlDbType.NVarChar).Value = projectOwner;
                dbCmd.Parameters.Add("@SupervisorID", SqlDbType.VarChar).Value = projectSupervisor;
                dbCmd.Parameters.Add("@ProjectStatus", SqlDbType.NVarChar).Value = projectStatus;

                dbConn.Open();

                int x = dbCmd.ExecuteNonQuery();
                return x;
            }
        }
    }

Затем бизнес-класс ':

class Projects
{
    DataAccessLayer dl = new DataAccessLayer();

    public string ProjectID { get; set; }
    public string ProjectTitle { get; set; }
    public string ProjectDescription { get; set; }
    public string ProjectStartDate { get; set; }
    public string ProjectDueDate { get; set; }
    public string ProjectOwner { get; set; }
    public string ProjectSupervisor { get; set; }
    public string ProjectStatus { get; set; }

 public DataTable GetAllProjects()
    {
        return dl.GetAllProjects();
    }

    public int InsertProject(string projectID, string projectTitle, string projectDescription, string projectStartDate, string projectDueDate, string projectOwner, string projectSupervisor, string projectStatus)
    {
        return dl.InsertProject(projectID, projectTitle, projectDescription, projectStartDate, projectDueDate, projectOwner, projectSupervisor, projectStatus);
    }

public int ChangeProject(string projectID, string projectTitle, string projectDescription, string projectStartDate, string projectDueDate, string projectOwner, string projectSupervisor, string projectStatus)
    {
        return dl.ChangeProject(projectID, projectTitle, projectDescription, projectStartDate, projectDueDate, projectOwner, projectSupervisor, projectStatus);
    }

}

class Student
{
    DataAccessLayer dl = new DataAccessLayer();
    public string StudentID { get; set; }
    public string StudentFirstName { get; set; }
    public string StudentSurname { get; set; }
    public string StudentCellNo { get; set; }
    public string StudentStatus { get; set; }

    public DataTable GetAllStudentNames()
    {
        return dl.GetAllStudentNames();
    }

    public DataTable GetAllStudents()
    {
        return dl.GetAllStudents();
    }

    public int InsertStudent(string StudentID, string StudentFirstName, string StudentSurname, string StudentCellNo, string StudentStatus)
    {
        return dl.InsertStudent(StudentID, StudentFirstName, StudentSurname, StudentCellNo, StudentStatus);
    }
}

class Supervisor
{
    DataAccessLayer dl = new DataAccessLayer();
    public string SupervisorID { get; set; }
    public string SupervisorFirstName { get; set; }
    public string SupervisorSurname { get; set; }
    public string SupervisorCellNo { get; set; }
    public string SupervisorStatus { get; set; }

    public DataTable GetAllSupervisorNames()
    {
        return dl.GetAllSupervisorNames();
    }

    public DataTable GetAllSupervisors()
    {
        return dl.GetAllSupervisors();
    }

    public int InsertSupervisor(string SupervisorID, string SupervisorFirstName, string SupervisorSurname, string SupervisorCellNo, string SupervisorStatus)
    {
        return dl.InsertSupervisor(SupervisorID, SupervisorFirstName, SupervisorSurname, SupervisorCellNo, SupervisorStatus);
    }
}

И, наконец, уровень представления:

 public partial class frmProjects : Form
{
    Projects pr = new Projects();
    Student st = new Student();
    Supervisor su = new Supervisor();


    public frmProjects()
    {
        InitializeComponent();


    }

    private void frmProjects_Load(object sender, EventArgs e)
    {            
        dgvProjects.DataSource = pr.GetAllProjects();
        cmbOwner.DataSource = st.GetAllStudentNames();
        cmbOwner.DisplayMember = "FullName";
        cmbOwner.ValueMember = "StudentID";
        cmbOwner.Text = "";
        cmbSupervisor.DataSource = su.GetAllSupervisorNames();
        cmbSupervisor.DisplayMember = "SVFullName";
        cmbSupervisor.ValueMember = "SupervisorID";
        cmbSupervisor.Text = "";
    }


    private void dgvProjects_SelectionChanged(object sender, EventArgs e)
    {
        if (dgvProjects.SelectedRows.Count > 0)
        {
            DataGridViewRow r = this.dgvProjects.SelectedRows[0];

            txtProjectID.Text = r.Cells[0].Value.ToString();
            txtProjectTitle.Text = r.Cells[1].Value.ToString();
            txtDescription.Text = r.Cells[2].Value.ToString(); ;
            dteStartDate.Text = r.Cells[3].Value.ToString();
            dteDueDate.Text = r.Cells[4].Value.ToString();
            cmbOwner.Text = r.Cells[5].Value.ToString();
            cmbSupervisor.Text = r.Cells[6].Value.ToString();
            txtStatus.Text = r.Cells[7].Value.ToString();
        }
    }


    private void btnChange_Click(object sender, EventArgs e)
    {
        pr.ChangeProject(txtProjectID.Text, txtProjectTitle.Text, txtDescription.Text, dteStartDate.Text, dteDueDate.Text, cmbOwner.SelectedValue.ToString(), cmbSupervisor.SelectedValue.ToString(), txtStatus.Text);

        dgvProjects.DataSource = pr.GetAllProjects();
    }
} 

Вот хранимые процедуры, которые загружаются вместе с формой, заполняющей таблицу данных и два поля со списком:

ALTER PROCEDURE [dbo].[up_GetAllProjects] 

SELECT ProjectID, ProjectTitle, ProjectDescription, ProjectStartDate, ProjectDueDate, StudentSurname + ' ' + StudentFirstName AS OwnerName, SupervisorSurname + ' ' + SupervisorFirstName AS SupervisorName, ProjectStatus   
FROM ProjectTable, SupervisorTable, StudentTable WHERE ProjectTable.SupervisorID = SupervisorTable.SupervisorID AND ProjectOwner = StudentID 

ALTER PROCEDURE [dbo].[us_GetAllSupervisorNames] 

SELECT SupervisorID, SupervisorFirstName + ' ' + SupervisorSurname AS SVFullName FROM SupervisorTable

ALTER PROCEDURE [dbo].[us_GetAllStudentnames] 

SELECT StudentID, StudentSurname + ' ' + StudentFirstName AS FullName FROM StudentTable

Ваша помощь будет высоко оценена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...