2015-01-08 3 views
1

Я хотел бы знать, как обновить мой datagridview на frmClient автоматически, когда frmUpdate, который открывается как .showDialog, закрывается. Я попробовал вызвать событие щелчка кнопки обновления в frmClient в событии закрытия формы frmUpdate и загрузке frmClient, но оба они не работали.Как обновить datagridview на родительской форме, когда дочерняя форма закрывается

 private void frmUpdate_FormClosing(object sender, FormClosingEventArgs e) 
    { 
    //  kryptonButton1_Click_1(null;null); 
     frmClient_Load_1(null;null); 
    } 



    public void frmClient_Load_1(object sender, EventArgs e) 
    { 

     var connectionString = ConfigurationManager.ConnectionStrings["Pigen"].ConnectionString; 

     connection = new MySqlConnection(connectionString); 

     if (this.OpenConnection() == true) 
     { 
      MySqlCommand sqlCmd = new MySqlCommand("sp_clientgridview", connection); 
      sqlCmd.CommandType = CommandType.StoredProcedure; 

      mySqlDataAdapter = new MySqlDataAdapter(sqlCmd); 
      DataSet DS = new DataSet(); 
      mySqlDataAdapter.Fill(DS); 
      sqlCmd.ExecuteNonQuery(); 
      kryptonDataGridView1.DataSource = DS.Tables[0]; 
      kryptonDataGridView1.Columns[0].Visible = false; 
      kryptonDataGridView1.Columns[2].Visible = false; 



     } 


    } 
+0

может не обнулять источник данных о Родитель затем передать его ..? – MethodMan

+0

как у вас означает sir – RichieCr7

+0

как вы привязываете данные к текущему datagridview ...? возможно, показывая больше кода, я бы мог лучше помочь .. также я говорю о привязке, это довольно легко – MethodMan

ответ

1

Вы можете создать функцию для загрузки клиента.

private void LoadClient() 
{ 
    var connectionString = ConfigurationManager.ConnectionStrings["Pigen"].ConnectionString; 

    connection = new MySqlConnection(connectionString); 

    if (this.OpenConnection() == true) 
    { 
     MySqlCommand sqlCmd = new MySqlCommand("sp_clientgridview", connection); 
     sqlCmd.CommandType = CommandType.StoredProcedure; 

     mySqlDataAdapter = new MySqlDataAdapter(sqlCmd); 
     DataSet DS = new DataSet(); 
     mySqlDataAdapter.Fill(DS); 
     sqlCmd.ExecuteNonQuery(); 
     kryptonDataGridView1.DataSource = DS.Tables[0]; 
     kryptonDataGridView1.Columns[0].Visible = false; 
     kryptonDataGridView1.Columns[2].Visible = false; 
} 

private void frmClient_Load_1(object sender, EventArgs e) 
{ 
    LoadClient(); 
} 

//In Update button: 
private void btnUpdate_Click(object sender, EventArgs e) 
{ 
    frmUpdate frm = new frmUpdate(); 
    frm.ShowDialog() 
    //refresh the datagridview by call again the LoadClient(); 
    LoadClient(); 
} 

Это должно сделать это :) Счастливое кодирование!

+0

Я получаю подчеркнутую ошибку на LoadClient(); в frmUpdate, который говорит, что он не существует в контексте, и, кроме того, я не хочу перезагружать frmClient, но обновляю datagrid, когда я вызываю frmUpdate this.Close(); – RichieCr7

+0

все эти коды находятся только в frmClient .. это не перезагружает frmClient, а обновляет данные в представлении datagrid. – Mark

+0

ok я повторю попытку и даю обратную связь – RichieCr7

0

Может быть, вы забыли вызвать функцию обновления, чтобы обновить DataGridView

if (this.OpenConnection() == true) 
    { 
     MySqlCommand sqlCmd = new MySqlCommand("sp_clientgridview", connection); 
     sqlCmd.CommandType = CommandType.StoredProcedure; 

     mySqlDataAdapter = new MySqlDataAdapter(sqlCmd); 
     DataSet DS = new DataSet(); 
     mySqlDataAdapter.Fill(DS); 
     sqlCmd.ExecuteNonQuery(); 
     kryptonDataGridView1.DataSource = DS.Tables[0]; 
     kryptonDataGridView1.Columns[0].Visible = false; 
     kryptonDataGridView1.Columns[2].Visible = false; 
     kryptonDataGridView1.Refresh(); //This or below will work 
     this.Refresh(); 
    } 
+0

он не работал после закрытия frmUpdate – RichieCr7

0

нормально, как ссылка на код Марка я создал LoadClient(); Функция

private void LoadClient() 
    { 
     var connectionString = ConfigurationManager.ConnectionStrings["Pigen"].ConnectionString; 

     connection = new MySqlConnection(connectionString); 

     if (this.OpenConnection() == true) 
     { 
      MySqlCommand sqlCmd = new MySqlCommand("sp_clientgridview", connection); 
      sqlCmd.CommandType = CommandType.StoredProcedure; 

      mySqlDataAdapter = new MySqlDataAdapter(sqlCmd); 
      DataSet DS = new DataSet(); 
      mySqlDataAdapter.Fill(DS); 
      sqlCmd.ExecuteNonQuery(); 
      kryptonDataGridView1.DataSource = DS.Tables[0]; 
      kryptonDataGridView1.Columns[0].Visible = false; 
      kryptonDataGridView1.Columns[2].Visible = false; 
     } 
    } 

и в моем методе событий kryptonDataGridView1_CellDoubleClick я изменил f2.Show(); f2.ShowDialog(); и я назвал свой LoadClient(); здесь вместо метода frmClient_Load_1, как вы можете видеть ниже.

private void kryptonDataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
    { 
     try 
     { 
      frmUpdate f2 = new frmUpdate(); 


      f2.lblClientID.Text = kryptonDataGridView1.SelectedRows[0].Cells["ClientID"].Value.ToString(); 
      f2.lblClearinAgentID.Text = kryptonDataGridView1.SelectedRows[0].Cells["Clearing_Agent_ID"].Value.ToString(); 
      f2.textboxClientCode.Text = kryptonDataGridView1.SelectedRows[0].Cells["Client Code"].Value.ToString(); 
      f2.txtboxClientName.Text = kryptonDataGridView1.SelectedRows[0].Cells["Client Name"].Value.ToString(); 
      f2.txtboxPostalAddress.Text = kryptonDataGridView1.SelectedRows[0].Cells["Postal Address"].Value.ToString(); 
      f2.txtboxTelephone.Text = kryptonDataGridView1.SelectedRows[0].Cells["Telephone"].Value.ToString(); 
      f2.txtboxFax.Text = kryptonDataGridView1.SelectedRows[0].Cells["Fax"].Value.ToString(); 
      f2.txtboxEmailAddress1.Text = kryptonDataGridView1.SelectedRows[0].Cells["E-mail Address 1"].Value.ToString(); 
      f2.txtboxEmailAddress2.Text = kryptonDataGridView1.SelectedRows[0].Cells["E-mail Address 2"].Value.ToString(); 
      f2.txtboxEmailAddress3.Text = kryptonDataGridView1.SelectedRows[0].Cells["E-mail Address 3"].Value.ToString(); 
      f2.txtboxWebsite.Text = kryptonDataGridView1.SelectedRows[0].Cells["Website"].Value.ToString(); 
      f2.txtboxChargeRate.Text = kryptonDataGridView1.SelectedRows[0].Cells["Charge Rate"].Value.ToString(); 
      f2.txtboxTotalDepo.Text = kryptonDataGridView1.SelectedRows[0].Cells["Total Deposit"].Value.ToString(); 
      f2.txtboxAccountBal.Text = kryptonDataGridView1.SelectedRows[0].Cells["Account Balance"].Value.ToString(); 

      f2.ShowDialog(); 

      LoadClient(); 
     } 

затем в моем Update события нажатия кнопки, я назвал kryptonDataGridView1_CellDoubleClick метод явно

private void btnUpdate_Click(object sender, EventArgs e) 
    { 

     kryptonDataGridView1_CellDoubleClick(null, null); 

    } 
Смежные вопросы