やあみんな、
仮想モード 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 行でロード時間が無視できる期間に短縮されます。
なぜ期待どおりに機能しないのか、誰かが光を当てることができますか?