Я получаю данные из базы данных Firebase и загружаю их в таблицу данных с помощью Binding List. После выполнения некоторых грубых операций в списке я получаю, что индекс n не имеет значения. Не могу точно сказать, когда это произойдет, потому что это может быть, когда я добавляю, редактирую или удаляю любой элемент.
private async void RefreshList()
{
try
{
switch (_selectedProduct)
{
case FirebaseConstants.PRODUCTS:
var plasticProducts = await LoadPlasticProducts();
var rubberProducts = await LoadRubberProducts();
if (plasticProducts.Count > 0)
{
dgPlastic.DataSource = null;
var plasticBinding = new BindingList<Product>(_plasticProducts);
var source = new BindingSource(plasticBinding, null);
dgPlastic.DataSource = source;
dgPlastic.Refresh();
ChangePlasticDataGridCellColor();
StretchPlasticLastColumn();
}
if (rubberProducts.Count > 0)
{
Console.WriteLine("_rubberProducts count: " + _rubberProducts.Count);
dgRubber.DataSource = null;
var rubberBinding = new BindingList<Product>(_rubberProducts);
var source2 = new BindingSource(rubberBinding, null);
dgRubber.DataSource = source2;
dgRubber.Refresh();
ChangeRubberDataGridCellColor();
StretchRubberLastColumn();
}
break;
private async Task<List<Product>> LoadPlasticProducts()
{
_plasticProducts?.Clear();
var products = await _firebaseService?.GetFirebaseReference()?.Child(FirebaseConstants.PRODUCTS)
.OnceAsync<Product>();
Console.WriteLine("Products fetched:" + products.Count);
foreach (var product in products)
{
product.Object.Id = product.Key;
var p = new Product(product.Object);
if (product.Object.Material.Name.Equals(FirebaseConstants.PLASTIC))
{
_plasticProducts.Add(p);
}
}
return _plasticProducts;
}
}