簡體   English   中英

Xamarin forms 堆棧布局返回 null

[英]Xamarin forms stacklayout returning null

我試圖將 stacklayout 上的項目放入 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;

    }

我得到的 null 錯誤的圖像

我得到的空錯誤的圖像

我什至無法開始理解這個問題。 我發現這個問題的方式會讓我已經很臟的代碼變得更臟。

我嘗試過的破壞性方法是使用主堆棧面板的選定上下文來影響第二個堆棧面板。

我什至做了cart_item model null的主鍵。

您選擇的元素是 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
        };
}

問題出在最后一行代碼。

SubListview.SelectedItem = null;

這以某種方式使鑄件看不到 e.selected 項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM