protected void SearchResultsGrid_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName.Equals("Attach")) { EnsureKit(); int index = AlwaysConvert.ToInt(e.CommandArgument); int kitComponentId = (int)SearchResultsGrid.DataKeys[index].Value; KitComponent kitComponent = KitComponentDataSource.Load(kitComponentId); if (kitComponent != null) { _Product.ProductKitComponents.Add(new ProductKitComponent(_Product, kitComponent)); _Product.Save(); CancelButton_Click(sender, e); } } else if (e.CommandName.Equals("Copy")) { EnsureKit(); int index = AlwaysConvert.ToInt(e.CommandArgument); int kitComponentId = (int)SearchResultsGrid.DataKeys[index].Value; KitComponent kitComponent = KitComponentDataSource.Load(kitComponentId); if (kitComponent != null) { // copy the component KitComponent branchedComponent = kitComponent.Copy(true); branchedComponent.Name = "Copy of " + kitComponent.Name; branchedComponent.Save(); // attach to the product _Product.ProductKitComponents.Add(new ProductKitComponent(_Product, branchedComponent)); _Product.Save(); CancelButton_Click(sender, e); } } }
protected void ComponentList_ItemCommand(object source, RepeaterCommandEventArgs e) { int kitComponentId = AlwaysConvert.ToInt(e.CommandArgument); KitComponent kitComponent = KitComponentDataSource.Load(kitComponentId); if (kitComponent != null) { switch (e.CommandName) { case "Branch": // locate the product relationship ProductKitComponent pkc = _Product.ProductKitComponents.FirstOrDefault(x => x.KitComponentId == kitComponent.Id); if (pkc != null) { // create a copy of the component KitComponent branchedComponent = kitComponent.Copy(true); branchedComponent.Save(); // update the product relationship _Product.ProductKitComponents.Add(new ProductKitComponent(_Product, branchedComponent, pkc.OrderBy)); _Product.ProductKitComponents.DeleteAt(_Product.ProductKitComponents.IndexOf(pkc)); _Product.Save(); } break; case "Delete": AbleContext.Current.Database.BeginTransaction(); ProductKitComponent matchingComponent = _Product.ProductKitComponents.FirstOrDefault(x => x.KitComponentId == kitComponentId); if (matchingComponent != null) { int index = _Product.ProductKitComponents.IndexOf(matchingComponent); if (index > -1) { _Product.ProductKitComponents.RemoveAt(index); _Product.Save(); } } kitComponent.Delete(); // DELETE THE KIT RECORD IF NO COMPONENTS REMAINING if (_Product.ProductKitComponents.Count == 0) { Kit kit = _Product.Kit; _Product.Kit = null; _Product.Save(); kit.Delete(); } AbleContext.Current.Database.CommitTransaction(); ComponentList.DataBind(); break; } } }