0

我在 MS Access 中有一个数据库。
我正在将数据库中的数据放在表单加载时的 datagridview 中。

        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 中有两列“name”和“pin code”,现在说“pin code”,它必须对 datagridview 行进行排序,以便
有任何事件以及如何处理

4

1 回答 1

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");
                }
            }
于 2013-03-20T09:20:32.290 回答