2017-06-13 2 views
0

Ich habe mehrere Benutzersteuerelemente in meinem C# Windows-Formular-Projekt. Jetzt habe ich nur ein Formular, das mehrere Tasten hat, jede Taste hat entsprechende Benutzerkontrolle. Jetzt ist das Problem, wenn ich eine Daten in die Datenbank von usercontrol1 eingefügt habe, muss ich diese eingefügten Daten in der datagridview von usercontrol2 anzeigen.C# refresh datagridview eines anderen Benutzersteuerelements nach dem Einfügen von Daten in ein anderes Benutzersteuerelement

Antwort

0

Ich nehme an, Sie haben einen Click-Ereignishandler für Button in UserControl1, die Sie aufrufen, um Daten in die Datenbank einzufügen.

Jetzt müssen Sie auf das UserControl2 von Ihrem Elternformular zugreifen, das DataGridView finden und eine Datenbinde erneut ausführen, um die neuen Daten zu erhalten.

Ich habe kein Visual Studio jetzt, ich habe mein Bestes versucht, um den Code hier zu formulieren.

Syntax des übergeordnete Formular Get:

Form parentForm = (this.Parent as Form); 

Und dann findet die UserControl2

var uc2 = parentForm.Controls.Find("UserControl2", true); 

Und dann findet das Datagridview

var dg2 = (DataGridView)parentForm.Controls.Find("datagridview1", true); 

Und dann ein databind

// Fetch Data from DataBase 
dg2.DataBind(); 
+0

Problem erfrischen kann solved-- da ich nur eine Instanz von jedem usercontrol, rief ich die Methode, die die datagridview von usercontrol, die aktualisiert werden muss gefüllt .. übrigens Dank für Ihre Antwort –

0

Haben Sie über Ihr Formular Zugriff auf datagridview von userControl2?
Wenn dies der Fall ist, sollten Sie DataSource aktualisieren, nachdem Sie die Zeile eingefügt haben.
Wenn UserControl1 und UserControl2 sind benutzerdefinierte Steuerelemente mit eigener Implementierung Sie Ereignis UserControl1 hinzufügen können, die gefeuert werden, wenn Daten gespeichert werden und Verfahren zu UserControl2, die Datasource

public partial class Form1:Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     userControl1.DataSaved += (sender, e) => { userControl2.RefreshGrid(); }; // Attach event 
    } 
} 

class UserControl1 : UserControl 
{ 
    public event EventHandler DataSaved; 

    private void SaveData() // call this when user saves data 
    { 
     InsetDataToDb(); // real insert to db 
     var handler = DataSaved; 
     if (handler != null) 
      handler(this, EventArgs.Empty); // call event handler 
    } 
} 
class UserControl2 : UserControl 
{ 
    public void RefreshGrid() 
    { 
     // refresh data source of grid view 
     dataGridView.DataSource = GetDataSource(); 
    } 
} 
+0

Problem gelöst-- da ich nur eine Instanz von jedem usercontrol, rief ich die Methode, die die Datagridview gefüllt der Benutzersteuerung, die aktualisiert werden muss. Übrigens vielen Dank für Ihre Antwort –

Verwandte Themen