0

やあみんな、

仮想モード DataGridView (Winforms) へのジャスト イン タイム ロードを実装しようとしていますが、パズルの大きなピースが欠けているか、機能していません....

私のテーブルの家は約です。150k 記録し、読み込みに約 2 分かかります。これは許容できません。

以下のコードの抜粋

 public partial class Customers : Form
{
    private List<Database.Customer> store = new List<Database.Customer>();
    public Customers()
    {
        InitializeComponent();
    }

    private void Customers_Load(object sender, EventArgs e)
    {
        store = Global.db.Customers.ToList();
        dgv_data.VirtualMode = true;
        BindingSource bs = new BindingSource();
        bs.DataSource = Global.db.Customers.Local.ToBindingList();
        dgv_data.DataSource = bs;
    }
    private void dgv_data_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        Global.db.SaveChanges();
    }

    void dgv_data_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
    {
        e.Value = store[e.RowIndex].GetType().GetProperties()[e.ColumnIndex].GetValue(store[e.RowIndex], null); ;
    }
}

今、私の理解では、CellValueNeeded は DataGridView が表示できる情報のみをデータベースから取得するため、一度に 30 行でロード時間が無視できる期間に短縮されます。

なぜ期待どおりに機能しないのか、誰かが光を当てることができますか?

4

1 に答える 1