protected void OptionsGrid_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "MoveUp" || e.CommandName == "MoveDown" || e.CommandName == "DoDelete") { int optionId = AlwaysConvert.ToInt(e.CommandArgument); IList <ProductOption> prodOpts = _Product.ProductOptions; Option option = OptionDataSource.Load(optionId); ProductOption porductOption = ProductOptionDataSource.Load(_Product, option); int itemIndex = prodOpts.IndexOf(porductOption); ProductOption selectedItem; if (e.CommandName == "MoveUp") { if ((itemIndex < 1) || (itemIndex > (prodOpts.Count - 1))) { return; } selectedItem = prodOpts[itemIndex]; prodOpts[itemIndex] = prodOpts[(itemIndex - 1)]; prodOpts[(itemIndex - 1)] = selectedItem; } else if (e.CommandName == "MoveDown") { if ((itemIndex > (prodOpts.Count - 2)) || (itemIndex < 0)) { return; } selectedItem = prodOpts[itemIndex]; prodOpts[itemIndex] = prodOpts[(itemIndex + 1)]; prodOpts[(itemIndex + 1)] = selectedItem; } else if (e.CommandName == "DoDelete") { //DELETE THE PRODUCT - OPTION ASSOCIATION if (itemIndex >= 0) { prodOpts.DeleteAt(itemIndex); } } //UPDATE THE DISPLAY ORDER for (short i = 0; i < prodOpts.Count; i++) { prodOpts[i].OrderBy = i; } prodOpts.Save(); _Options = _Product.GetOptions(); _Product.Save(); DoAdjustVariants(); BindOptionsGrid(); } }
protected void DoAdjustVariants() { IList <ProductOption> productOptions = ProductOptionDataSource.LoadForProduct(_ProductId); List <Option> options = (from o in productOptions orderby o.OrderBy select o.Option).ToList <Option>(); IList <ProductVariant> variants = ProductVariantDataSource.LoadForProduct(_ProductId); foreach (ProductVariant variant in variants) { Option o1 = FindOptionWithChoice(options, variant.Option1); Option o2 = FindOptionWithChoice(options, variant.Option2); Option o3 = FindOptionWithChoice(options, variant.Option3); Option o4 = FindOptionWithChoice(options, variant.Option4); Option o5 = FindOptionWithChoice(options, variant.Option5); Option o6 = FindOptionWithChoice(options, variant.Option6); Option o7 = FindOptionWithChoice(options, variant.Option7); Option o8 = FindOptionWithChoice(options, variant.Option8); Dictionary <int, int> map = new Dictionary <int, int>(); if (o1 != null) { map.Add(o1.Id, variant.Option1); } if (o2 != null) { map.Add(o2.Id, variant.Option2); } if (o3 != null) { map.Add(o3.Id, variant.Option3); } if (o4 != null) { map.Add(o4.Id, variant.Option4); } if (o5 != null) { map.Add(o5.Id, variant.Option5); } if (o6 != null) { map.Add(o6.Id, variant.Option6); } if (o7 != null) { map.Add(o7.Id, variant.Option7); } if (o8 != null) { map.Add(o8.Id, variant.Option8); } if (variant.Option1 > 0) { variant.Option1 = map[options[0].Id]; } if (variant.Option2 > 0) { variant.Option2 = map[options[1].Id]; } if (variant.Option3 > 0) { variant.Option3 = map[options[2].Id]; } if (variant.Option4 > 0) { variant.Option4 = map[options[3].Id]; } if (variant.Option5 > 0) { variant.Option5 = map[options[4].Id]; } if (variant.Option6 > 0) { variant.Option6 = map[options[5].Id]; } if (variant.Option7 > 0) { variant.Option7 = map[options[6].Id]; } if (variant.Option8 > 0) { variant.Option8 = map[options[7].Id]; } variant.Save(); } }