日期:2014-05-17  浏览次数:20954 次

VS2008 .NetFramework3.5 DataGridView 同步数据到绑定的数据源和数据库
大家好,我在一个桌面窗体中添加了DataGridView,并将其绑定了项目中的数据源。如下图所示:

该数据源是项目数据库中的一张表---keyword.
VS2008自动为我生成了一下几个辅助类或变量:
1、keywordTableAdapter:相关数据库的操作类,默认帮我写好了GetData,我自己写了Update方法,如下图所示:

2、keywordDataSet:数据源变量?不太清楚。
private void ChangeKeywordsForm_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“keywordDataSet.keyword”中。您可以根据需要移动或移除它。
            this.keywordTableAdapter.Fill(this.keywordDataSet.keyword);
        }

需要说明的是,keywordDataSet同时也是一个类,自动生成的。

我的需求是,用户在界面上修改了DataGridView的值,点击保存之后,界面上的值同步到数据源中,进而保存在数据库中。因为是第一次做相关应用,所以摸着石头过河,在论坛上搜了不少帖子,但是都是通过代码绑定数据源的,使用的类也都是诸如:DataSet这些通用类,跟我的需求不太相符。
SqlConnection con = null;  
  
    SqlDataAdapter sa = null;  
  
    SqlCommandBuilder sb = null;  
  
    DataTable dt = null;  
  
    BindingSource bs = null;  
  
窗体时绑定数据  
  
private void DataBingding_Load(object sender, EventArgs e)  
  
    {  
  
  
  
        con = new SqlConnection("server=.;uid=sa;pwd=sa;database=pubs;");  
  
        try  
  
        {  
  
            con.Open();  
  
            sa = new SqlDataAdapter("select * from jobs", con);  
  
            sb = new SqlCommandBuilder(sa);//绑定SqlDataAdapter  
  
  
  
            dt = new DataTable();  
  
            sa.Fill(dt);  
  
            this.dataGridView1.DataSource = dt;  
  
            bs = new BindingSource();  
  
            bs.DataSource = dt;//绑定BindingSource  
  
            con.Close();  
  
        }  
  
        catch (Exception ex)  
  
        {