Индекс [n] не имеет значения .Net DataGridView с базой данных Firebase - PullRequest
0 голосов
/ 30 октября 2019

Я получаю данные из базы данных 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;

        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...