Xamarin формирует стековое расположение, возвращающее ноль - PullRequest
0 голосов
/ 03 апреля 2020

Я пытался поместить элемент на стеке в базу данных SQLite, но он просто не переносит никаких данных.

  private void MainCategory_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        var carier = e.SelectedItem as Item;






        var cart_Itemsx = new List<cart_Items>();
        cart_Itemsx.Add(new Models.cart_Items { cartid = 1, Id = carier.itid, image = carier.image, name = carier.title, price = carier.price1, quantity = "1", type = "Wash and Iron" });
        cart_Itemsx.Add(new Models.cart_Items { cartid = 2, Id = carier.itid, image = carier.image, name = carier.title, price = carier.price2, quantity = "1", type = "Iron Only" });
        SubCategory.ItemsSource = cart_Itemsx.ToList();
    }



    private void SubCategory_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        var dbcontet = e.SelectedItem as cart_Items;
        _dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData), "WashPro.db3");
        var db = new SQLiteConnection(_dbPath);
        db.CreateTable<cart_Items>();



        var MaximumPrimaryKey = db.Table<cart_Items>().OrderByDescending(zt => zt.cartid).FirstOrDefault();

        var waltani = new cart_Items()
        {
            cartid = (MaximumPrimaryKey == null ? 1 : MaximumPrimaryKey.cartid + 1),
            Id = dbcontet.Id,
            image = dbcontet.image,
            name = dbcontet.name,
            price = dbcontet.price,
            quantity = dbcontet.quantity,
            type = dbcontet.quantity
        };

        if (MaximumPrimaryKey == null)
        {
            db.Insert(waltani);
        }
        else if (MaximumPrimaryKey != null)
        {
            var MaximumQuantityKey = db.Table<cart_Items>().Where(m => m.cartid.Equals(dbcontet.cartid) && m.type.Equals(dbcontet.type)).FirstOrDefault();

            if (MaximumQuantityKey != null)
            {
               waltani.price = dbcontet.price = 1;
                db.Update(waltani);
            }

        }
        SubCategory.SelectedItem = null;

    }

изображение нулевой ошибки, которую я получил

image of the null error I got

Я даже не могу понять проблему. То, как я обнаружил эту проблему, сделает мой и без того грязный код еще более грязным.

У меня есть метод повреждения, который я пытался использовать, используя выбранный контекст панели основного стека, чтобы влиять на вторую панель стека.

Я даже сделал первичный ключ модели cart_item пустым.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Проблема заключается в последней строке кода.

SubListview.SelectedItem = null;

Это каким-то образом заставляет кастинг не видеть выбранные элементы.

0 голосов
/ 03 апреля 2020

Выбранный элемент имеет значение NULL или таблица базы данных не содержит элементов, которые вы ищете в запросе, что более вероятно, потому что вы пытаетесь инициализировать свою базу данных в SubCategory_ItemSelected. Это неправильный подход.

Попробуйте проверить, существует ли элемент базы данных первым.

var exist = db.Table<cart_Items>().OrderByDescending(zt => zt.cartid).Any();

if (exist)
{
        var MaximumPrimaryKey = db.Table<cart_Items>().OrderByDescending(zt => zt.cartid).FirstOrDefault();

        var waltani = new cart_Items()
        {
            cartid = (MaximumPrimaryKey == null ? 1 : MaximumPrimaryKey.cartid + 1),
            Id = dbcontet.Id,
            image = dbcontet.image,
            name = dbcontet.name,
            price = dbcontet.price,
            quantity = dbcontet.quantity,
            type = dbcontet.quantity
        };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...