2016-02-25 1 views
1

Je souhaite lier DataGridView à une table de ma base de données. J'ai trouvé plusieurs sujets à ce sujet, mais je n'arrive pas à le faire fonctionner. Peut-être qu'il me manque quelque chose.Liaison de DataGridView à une table de la base de données

Je construis un "moniteur" dans lequel je veux voir les changements de base de données d'une table spécifique. Ainsi, après avoir chargé les données dans un DataGridView, toute modification dans cette table spécifique doit être propagée à DataGridView.

Regardez ce que je l'ai fait:

SqlDataAdapter daTab; 
    DataTable dTable; 

    private void button1_Click(object sender, EventArgs e) 
    { 

     string s; 
     s = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\tempDB\Database1.mdf;Integrated Security=True"; 
     SqlConnection conn= new SqlConnection(s); 
     conn.Open(); 

     daTab = new SqlDataAdapter("Select * From tab", conn); 
     dTable = new DataTable(); 
     daTab.Fill(dTable); 
     BindingSource bSource = new BindingSource(); 
     bSource.DataSource = dTable; 
     dgv1.DataSource = bSource; 
    } 

Mais il met à jour que le DataViewGrid quand je lance

daTab.Fill(dTable); 

Je peux avoir deux options d'ici: 1) obtenir pour fonctionner à droite (c'est pourquoi j'ai besoin de votre aide) ou 2) mettre une minuterie et exécuter daTab.Fill(dTable); à un intervalle de temps. Je suis particullary soignant l'option 1). Donc, j'apprécierais toute aide donnée.

Répondre

1

Il semble que vous utilisiez SQL Server. Si oui, jetez un oeil à la classe SqlDependency. Vous pouvez créer un délégué pour l'événement OnChange de cette classe et être averti des modifications que vous pouvez ensuite propager à votre GridView. Voici un bon article sur le sujet avec quelques exemples: https://msdn.microsoft.com/en-us/library/62xk7953(v=vs.110).aspx

+0

Merci! J'ai créé le 'SqlDependency', mais maintenant je reçois le problème de SQL Server Service Broker. J'ai essayé de faire un 'ALTER DATABASE Temp SET ENABLE_BROKER;' mais il donne une erreur dans le mot DATABASE. Il semble que SQL Server Compact ne prenne pas en charge 'ALTER DATABASE'. –

+0

Je n'ai jamais utilisé Compact mais jetez un oeil à cet article. Il semble que vous ayez besoin d'une sorte de verrou exclusif lors de la définition de enable_broker. Je me demande si c'est votre problème? http://zarez.net/?p=755 – Ageonix

+0

Voici un autre utilisateur avec des problèmes enable_broker, mais il est étrange que vous obtenez une erreur sur le mot de la base de données lui-même. http://stackoverflow.com/questions/1094202/enable-sql-server-broker-taking-too-long-time – Ageonix