繁体   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