简体   繁体   中英

DataGridView not update after inserting details on another form [C#]

This is the data grid view form, where the 2nd form will show up when Add Member button is clicked.

private void btnAddMember_Click(object sender, EventArgs e)
    {
        Cashier_NewMember F_Cashier_NewMember = new Cashier_NewMember();

        F_Cashier_NewMember.Show();
    }

This is the form where I'll be inserting the member details.

private void btnAddMember_Click(object sender, EventArgs e)
    {
        try
        {
            if (sqlCon.State == ConnectionState.Closed)
                sqlCon.Open();

            if (btnAddMember.Text == "Add Member")
            {

                if (string.IsNullOrWhiteSpace(txtFirstName.Text) || string.IsNullOrWhiteSpace(txtLastName.Text) || string.IsNullOrWhiteSpace(txtMobileNo.Text) || string.IsNullOrWhiteSpace(txtHomeNo.Text) || string.IsNullOrWhiteSpace(txtAddress.Text) || string.IsNullOrWhiteSpace(txtPostcode.Text) || string.IsNullOrWhiteSpace(txtCity.Text) || string.IsNullOrWhiteSpace(txtCountry.Text))
                    MessageBox.Show("All fields are required!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                else if (string.IsNullOrWhiteSpace(txtMemberID.Text))
                    MessageBox.Show("Please generate a Member ID!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                else
                {
                    SqlCommand sqlCmd = new SqlCommand("AddOrUpdateMembership", sqlCon);
                    sqlCmd.CommandType = CommandType.StoredProcedure;
                    sqlCmd.Parameters.AddWithValue("@mode", "Add");
                    sqlCmd.Parameters.AddWithValue("@Member_ID", txtMemberID.Text);
                    sqlCmd.Parameters.AddWithValue("@Member_Since_Date", dtpMemberSince.Value.Date);
                    sqlCmd.Parameters.AddWithValue("@Title", cmbTitle.GetItemText(cmbTitle.SelectedItem));
                    sqlCmd.Parameters.AddWithValue("@First_Name", txtFirstName.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@Last_Name", txtLastName.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@DOB", dtpDOB.Value.Date);
                    sqlCmd.Parameters.AddWithValue("@Gender", cmbGender.GetItemText(cmbGender.SelectedItem));
                    sqlCmd.Parameters.AddWithValue("@Mobile_No", cmbMobileNo.GetItemText(cmbMobileNo.SelectedItem) + txtMobileNo.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@Home_No", cmbHomeNo.GetItemText(cmbHomeNo.SelectedItem) + txtHomeNo.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@House_Address", txtAddress.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@Post_Code", txtPostcode.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@City", txtCity.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@City_State", txtState.Text.Trim());
                    sqlCmd.Parameters.AddWithValue("@Country", txtCountry.Text.Trim());

                    sqlCmd.ExecuteNonQuery();
    }

This is the code I used to fill up the data gird view

public void FillDataGridView()
    {
        Cashier_NewMember F_Cashier_NewMember = new Cashier_NewMember();

        if (sqlCon.State == ConnectionState.Closed)
            sqlCon.Open();

        SqlDataAdapter sqlDa = new SqlDataAdapter("ViewOrSearchMembership", sqlCon);
        sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
        sqlDa.SelectCommand.Parameters.AddWithValue("@Member_ID", F_Cashier_NewMember.txtMemberID.Text); 
        DataTable dtbl = new DataTable();
        sqlDa.Fill(dtbl);
        dgvMembershipDetails.DataSource = dtbl;

        sqlCon.Close();
    }

This is the stored procedure code I used to search and fill the data grid view.

CREATE PROCEDURE [dbo].[ViewOrSearchMembership]
    @Member_ID VARCHAR(10)
AS
    SELECT *
    FROM Member
    WHERE Member_ID LIKE @Member_ID + '%'

I've tried adding the FillDataGridView() everywhere, but the data grid view is still not updating.

在分配数据源dgvMembershipDetails.update()之后尝试此操作

dgvMembershipDetails.Databind()应该放在分配数据源行之后。

make sure you dgvMembershipDetails modifiers was public then try to clear datagridview before fill it

public void FillDataGridView(){
    Cashier_NewMember F_Cashier_NewMember = new Cashier_NewMember();

    if (sqlCon.State == ConnectionState.Closed)
        sqlCon.Open();

    SqlDataAdapter sqlDa = new SqlDataAdapter("ViewOrSearchMembership", sqlCon);
    sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
    sqlDa.SelectCommand.Parameters.AddWithValue("@Member_ID", F_Cashier_NewMember.txtMemberID.Text); 
    DataTable dtbl = new DataTable();
    sqlDa.Fill(dtbl);
    dgvMembershipDetails.DataSource =null;
    dgvMembershipDetails.DataSource = dtbl;

    sqlCon.Close();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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