2013-06-13 5 views
-1

je glissé et déposé une table de source de données, et comme prévu je me suis une boîte:C# mise à jour DataGridView requête

enter image description here

Il y a deux lignes ici, "id" et "owner_id". J'ai besoin de "owner_id" pour insérer une valeur spécifique spécifiée dans une zone de texte. Où puis-je modifier la requête exécutée lorsque vous ajoutez une ligne à l'aide de DataGridView? owner_id dans cette table est la clé étrangère à une autre clé primaire de tables, la clé primaire est toujours trouvée dans un textbox, donc j'ai besoin de la requête pour obtenir cette valeur textbox et le définir comme owner_id.

+0

Vous pouvez effectuer une recherche pour la liaison le contenu de la colonne et le contenu de la zone de texte, en utilisant param mode = twoWay. –

+0

@ user2480500 Vous avez dit "id" et "owner_id" comme "rows", vous voulez dire probablement des colonnes? Donc, à cet égard, vous voulez ajouter des colonnes ou des lignes? – Edper

+0

Il est possible de cliquer dans la grille, d'écrire un nom dans la boîte et de cliquer sur Entrée pour ajouter la ligne. Cela me donne une erreur que la colonne owner_id ne peut pas être nulle. J'ai besoin de modifier cette requête qui est exécutée, donc il insère dans la table mais définit owner_id = idTextBox.text. – user2480500

Répondre

0

Mise à jour:

en fonction de votre mise à jour, vous pouvez probablement utiliser événement RowsAdded mais vous devez d'abord l'initialiser probablement dans votre Form1_Load

dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded); 

Et puis lorsque l'utilisateur a ajouté une ligne que vous aussi ajoutez la valeur dans la zone de texte à votre grille de données sur la dernière ligne. Disons que votre « owner_id » est dans la première colonne, il serait probablement ressembler à ceci:

void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     dataGridView1.Rows[dataGridView1.Rows.Count - 2].Cells[0].Value = textBox1.Text; 

    } 

Bien honnêtement cela ne serait pas mettre à jour votre table de liaison si vous avez juste le DataGridView.

Pour voir l'effet que vous pouvez afficher temporairement la colonne cachée après avoir ajouté une ligne comme:

void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     dataGridView1.Columns[0].Visible = true; 
     dataGridView1.Rows[dataGridView1.Rows.Count - 2].Cells[0].Value = textBox1.Text; 

    } 

Assurez-vous de la façon dont votre DataGridView propriété nommée AllowUserToAddRows est True

+0

Ce n'est pas mon code, je n'en ai pas dans le code, j'ai glissé et déposé la table de "DataSources" dans le formulaire et je cache la colonne owner_id. – user2480500