2013-03-20 47 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"); 
       } 
      }