2016-08-23 1 views
1

Ich werde versuchen, klar zu sein :) Ich erstelle neue DataGridView dynamisch dank einer Schaltfläche.Wie Zugriff auf aktuelle DataGridView dynamisch

Es funktioniert gut, aber ich möchte in der Lage sein, den Wert einer Zelle von DataGridView zu ändern und meine Datenbank zu aktualisieren. Das Problem ist, dass ich nicht finde, wie man den aktuellen Fokus DataGridView bekommt.

Ich habe versucht, mit dem Code in diesem link zu spielen, ich bekomme den Namen der aktuellen DataGridView. Aber ich glaube nicht, dass ich ein Steuerelement als DataGridView manipulieren kann. Hier ist meine Funktion:

private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    DataGridView datagridcell = new DataGridView(); 
    string codearticle = "'" + CodeArticle0.Text + "'"; 
    string division = "'" + Division0.Text + "'"; 
    string colonne = datagridcell.Columns[e.ColumnIndex].HeaderText; 
    string valeur = sender.ToString(); 
    string Ligne = datagridcell.Rows[0].Cells[3].ToString(); 
    Controller.ControllerMenuPrincipal.updateQALigneFab(codearticle, division, 
     colonne, valeur, Ligne); 
} 

Statt dessen:

DataGridView datagridcell = new DataGridView(); 

ich den aktuellen/fokussierter Datagridview

Ich weiß nicht zugreifen wollen, wenn es möglich ist, bin ich ein noob in Winforms.

Dank für die Hilfe

+2

Wenn Sie 'dataGridView_CellValueChanged' an' CellValueChanged' Ihrer dynamischen Raster angehängt haben, dann die 'sende r 'Parameter ist die' DataGridView', auf die das Ereignis für sie ausgelöst wird. So können Sie den Absender "DataGridView" auf folgende Weise erhalten: 'var grid = (DataGridView) sender;'. –

+0

Vielen Dank! das ist genau das, was ich brauchte. –

+0

Gern geschehen :) –

Antwort

1

Lösung Als Reza Aghaei sagte

"Wenn Sie dataGridView_CellValueChanged zu CellValueChanged von yourdynamic Gitter angebracht ist, dann ist der Sender Parameter der Datagridview, die das Ereignis ausgelöst wird Sie können also den Absender DataGridView auf diese Weise abrufen: var grid = (DataGridView) sender ;. - Reza Aghaei "

so ersetzt ich nur diese Zeile:

DataGridView datagridcell = new DataGridView(); 

durch diese:

var grid = (DataGridView)sender; 

, so kann ich "Gitter" Variable verwenden, um meine aktuelle Datagridview

endgültiger Code sieht aus wie das zu manipulieren:

 private void dataGridView13_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     var grid = (DataGridView)sender; //get current datagridview 
     string codearticle = "'" + CodeArticle0.Text + "'"; 
     string division = "'" + Division0.Text + "'"; 
     string colonne = grid.Columns[e.ColumnIndex].HeaderText; //get column headertext of current cell 
     string valeur = grid[e.ColumnIndex, e.RowIndex].Value.ToString(); //get new value of current cell 
     string Ligne = grid[3, 0].Value.ToString(); 
     Controller.ControllerMenuPrincipal.updateQALigneFab(codearticle, division, colonne, valeur, Ligne); //calling stored procedure to update my table 
    } 
Verwandte Themen