1

いくつかのルックアップテーブルをWinFormのコンボボックスにバインドしようとしています。POCCOクラスを作成し、データベースを生成しました。アプリにデータソースを追加しました。デザイナのコンボボックスにソーステーブルをドロップすると、それぞれのバインディングが正常に設定されます。データベース内のテーブルにテストデータを入力しました。

ここで私は助けが必要です。データセットを使用する場合は、フォームのLoadイベントでテーブルアダプターを入力するだけでデータを取得できます。EFでは、データをロードするために何かをしなければなりません。おそらくクエリ?他に何かありますか?私はすべてが正しく設定されていると思います。ロードして機能させるための最後のステップが必要です。ありがとう。

4

1 に答える 1

0

データベースと通信する方法は多数あります。おそらくEF Code Firstアプローチを使用していると思います。このコンテキストを想像してください:

public class WinFormContext : DbContext
{
    public DbSet<Car> Cars { get; set; }
}

public class Car
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
}

最初にレコードを追加します。テキスト ボックスと 1 つのボタンで簡単なフォームを作成します。

    private void button1_Click(object sender, EventArgs e)
    {
        using (var WinFormContext = new WinFormContext())
        {
            Car car = new Car { Name = textBox1.Text };
            WinFormContext.Cars.Add(car);
            WinFormContext.SaveChanges();
        }
    }

onClick イベントの後に新しいレコードを追加する方法は簡単です。ここで、グリッド ビューですべてのレコードを表示したいと考えています。考えられる解決策の 1 つは、コントロールを手動で埋めることです。

    BindingSource bindingSource = new BindingSource();
    private void Form2_Load(object sender, EventArgs e)
    {
        var WinFormContext = new WinFormContext();
        bindingSource.DataSource = WinFormContext.Cars.ToList();

        dataGridView1.DataSource = bindingSource;
        dataGridView1.AutoGenerateColumns = true;
    }

しかし、それを行う方法は他にもあります。Google で「win フォームのデータ バインディング」をご覧になることをお勧めします...

于 2013-01-01T12:21:32.447 に答える