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 が表示され、
新しいデータを追加できる空の行が表示されます。データを含む既存の行のアイテムをクリックすると、データを更新したり削除したりできます。

その更新をコード化して削除および追加し、データベースに反映する方法には、イベントがありますか、または
データグリッドビューの列をサイズ変更できないようにするにはどうすればよいですか。

また、列ヘッダーをクリックしたときにデータグリッドビューに「名前」と「ピンコード」の2つの列がある場合、今のところ「ピンコード」と言って、データグリッドビューの行を順番にソートする必要
があります。

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 に答える