From 0c8b10cfe63df1f2677c4df6da31dafe1c4c5eba Mon Sep 17 00:00:00 2001 From: Frozd <59323943+frozdbyte@users.noreply.github.com> Date: Fri, 28 Nov 2025 12:37:22 +0100 Subject: [PATCH] fix: ordering with search v0 --- CarManagerV2/Car.cs | 5 ++++- CarManagerV2/MainForm.cs | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CarManagerV2/Car.cs b/CarManagerV2/Car.cs index 4764c60..a46a771 100644 --- a/CarManagerV2/Car.cs +++ b/CarManagerV2/Car.cs @@ -15,8 +15,9 @@ namespace CarManagerV2 string color; int mileage; decimal price; + int order; - public Car(int id, string make, string model, int year, string color, int mileage, decimal price) + public Car(int id, string make, string model, int year, string color, int mileage, decimal price, int order = 0) { this.id = id; this.make = make; @@ -25,6 +26,7 @@ namespace CarManagerV2 this.color = color; this.mileage = mileage; this.price = price; + this.order = order; } public int Id { get { return id; } set { id = value; } } @@ -34,6 +36,7 @@ namespace CarManagerV2 public string Color { get { return color; } set { color = value; } } public int Mileage { get { return mileage; } set { mileage = value; } } public decimal Price { get { return price; } set { price = value; } } + public int Order { get { return order; } set { order = value; } } public override string ToString() diff --git a/CarManagerV2/MainForm.cs b/CarManagerV2/MainForm.cs index 9c4d061..74e9fed 100644 --- a/CarManagerV2/MainForm.cs +++ b/CarManagerV2/MainForm.cs @@ -26,6 +26,10 @@ namespace CarManagerV2 private async void refreshCars(List _cars, bool updateGlobal = true) { + + // Sort by Car.Order. If equal, sort by ID + _cars = _cars.Count > 0 ? _cars.OrderBy(c => c.Order).ThenBy(c => c.Id).ToList() : _cars; + if (updateGlobal) { cars = _cars; @@ -105,6 +109,9 @@ namespace CarManagerV2 flpCars.Controls.Remove(card); } + flpCars.Refresh(); + flpCars.Invalidate(); + flpCars.Update(); } @@ -141,12 +148,15 @@ namespace CarManagerV2 refreshCars(results, false); } - private void tbxSearch_TextChanged(object sender, EventArgs e) + private async void tbxSearch_TextChanged(object sender, EventArgs e) { string query = tbxSearch.Text; - if(string.IsNullOrWhiteSpace(query)) + await Task.Delay(300); // debounce + if(query != tbxSearch.Text) return; // text changed during delay + flpCars.Controls.Clear(); + if (string.IsNullOrWhiteSpace(query)) { - refreshCars(cars, false); + refreshCars(cars); } else {