2013-03-20 48 views
0

我在MS Access中有一個數據庫。
而我把數據庫中的數據放在表單加載的datagridview上。c#DataGridView&oledb

 string connectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + Application.StartupPath + "/Db.mdb"; 
     OleDbConnection conObj = new OleDbConnection(connectionString); 
     conObj.Open(); 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable(); 
     ds.Tables.Add(dt); 
     OleDbDataAdapter da = new OleDbDataAdapter(); 
     da = new OleDbDataAdapter("SELECT * FROM StopMaster", conObj); 
     da.Fill(dt); 
     dataGridView1.DataSource = dt.DefaultView; 
     conObj.Close(); 

上執行,它會顯示的datagridview與數據庫中的項目,
有一個空行,我們可以添加新的數據 ,如果我們點擊現有行的項目與數據,我們可以更新沿它甚至刪除它

如何爲更新刪除和添加,並反映到數據庫 代碼是有什麼事件或什麼
還我怎樣才能使數據網格視圖的列不能調整大小。

也說,如果我有兩列「名稱」,並在datagridview的「密碼」當我在列標題點擊都說現在「密碼」就必須在DataGridView行爲了
排序沒有任何事件,如何做到這一點

回答

0

首先要提到的是,你將需要綁定你的數據表到Datagridview。這樣,編輯DataGridView控件時所做的任何更改都會直接反映到基礎DataTable中。

我假設你已經填充了DataTable對象。

首先創建BindingSource的對象: -

BindingSource bs = new BindingSource(); 

bs.Datasource = dt; 

現在我們需要讓這個綁定對象的數據源爲您的DataGridView控制: -

dataGridView1.DataSource = bs; 

在一個方法,你可以使用以下代碼提交更改: -

using (OleDbConnection con = new OleDbConnection(connectionString)) 
       { 
        var adaptor = new OleDbDataAdapter(); 
        adaptor.SelectCommand = new OleDbCommand(""SELECT * FROM [StopMaster]", con); 

       var cbr = new OleDbCommandBuilder(adaptor); 

       cbr.GetDeleteCommand(); 
       cbr.GetInsertCommand(); 
       cbr.GetUpdateCommand(); 

       try 
       { 
        con.Open(); 
        adaptor.Update(dt); 
       } 
       catch (OleDbException ex) 
       { 
        MessageBox.Show(ex.Message, "OledbException Error"); 
       } 
       catch (Exception x) 
       { 
        MessageBox.Show(x.Message, "Exception Error"); 
       } 
      }