2016-02-25 64 views
1

我想將DataGridView綁定到我的數據庫中的表。我發現了幾個關於這個問題的主題,但我無法讓它工作。也許我錯過了一些東西。將DataGridView綁定到數據庫中的表

我正在構建一個「監視器」,我想查看特定表的任何數據庫更改。因此,在將數據加載到DataGridView中後,該特定表中的任何更改都應該傳播到DataGridView。

看我做了什麼:

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; 
    } 

但它僅更新DataViewGrid當我運行

daTab.Fill(dTable); 

所以我可能從這裏兩種選擇:1),得到它的工作的權利(這就是爲什麼我需要你的幫助)或者2)放置一個計時器並在某個時間間隔運行daTab.Fill(dTable);。我特別關注選項1)。所以,我會很感激任何幫助。

回答

1

這聽起來像你正在使用SQL Server。如果是這樣,請查看SqlDependency類。你可以爲這個類的OnChange事件創建一個委託,並通知你可以傳播給你的GridView。這裏有一個很好的關於這個主題的書面例子: https://msdn.microsoft.com/en-us/library/62xk7953(v=vs.110).aspx

+0

Thanks !!我創建了'SqlDependency',但現在我得到了SQL Server Service Broker問題。我試圖做一個'ALTER DATABASE Temp SET ENABLE_BROKER;'但是它在DATABASE字中給出錯誤。它看起來像SQL Server Compact不支持'ALTER DATABASE'。 –

+0

我從來沒有使用Compact,但看看這篇文章。這聽起來像是你在設置enable_broker時需要有某種獨佔鎖。不知道這是你的問題? http://zarez.net/?p=755 – Ageonix

+0

這是另一個用戶enable_broker問題,但它很奇怪你的數據庫字本身出現錯誤。 http://stackoverflow.com/questions/1094202/enable-sql-server-broker-taking-too-long-time – Ageonix

相關問題