/// <summary>
 /// Hide/rename columns in uniGrid before loading data.
 /// </summary>
 void ugOptions_OnBeforeDataReload()
 {
     // Hide price adjustment if category is used in product variants
     if (VariantHelper.AreCategoriesUsedInVariants(ProductID, new[] { CategoryID }))
     {
         ugOptions.NamedColumns["SKUPrice"].Visible = false;
     }
 }
    /// <summary>
    /// Hide/rename columns in uniGrid before loading data.
    /// </summary>
    private void grid_OnBeforeDataReload()
    {
        switch (categoryObj.CategoryType)
        {
        case OptionCategoryTypeEnum.Attribute:
        case OptionCategoryTypeEnum.Text:
            ugOptions.NamedColumns["SKUName"].HeaderText        = GetString("unigrid.productoptions.OptionName");
            ugOptions.NamedColumns["SKUNumber"].Visible         = false;
            ugOptions.NamedColumns["SKUDepartment"].Visible     = false;
            ugOptions.NamedColumns["SKUAvailableItems"].Visible = false;
            break;
        }

        // Hide price adjustment if category is used in product variants
        if (parentProductId > 0)
        {
            if (VariantHelper.AreCategoriesUsedInVariants(QueryHelper.GetInteger("productId", 0), new[] { categoryObj.CategoryID }))
            {
                ugOptions.NamedColumns["SKUPrice"].Visible = false;
            }
        }
    }
    protected void uniSelector_OnSelectionChanged(object sender, EventArgs e)
    {
        var cu = MembershipContext.AuthenticatedUser;

        // Check permissions
        if ((cu == null) || (!cu.IsAuthorizedPerResource(ModuleName.ECOMMERCE, EcommercePermissions.ECOMMERCE_MODIFY) && !cu.IsAuthorizedPerResource(ModuleName.ECOMMERCE, EcommercePermissions.PRODUCTS_MODIFY)))
        {
            RedirectToAccessDenied(ModuleName.ECOMMERCE, "EcommerceModify OR ModifyProducts");
        }
        else
        {
            string newValues   = ValidationHelper.GetString(uniSelector.Value, null);
            string addItems    = DataHelper.GetNewItemsInList(UniSelectorData, newValues);
            string removeItems = DataHelper.GetNewItemsInList(newValues, UniSelectorData);

            // Add SKU to Option Category
            if (!String.IsNullOrEmpty(addItems))
            {
                string[] newItems = addItems.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string item in newItems)
                {
                    SKUOptionCategoryInfoProvider.AddOptionCategoryToSKU(categoryId, ValidationHelper.GetInteger(item, 0));
                }

                // Show message
                ShowChangesSaved();
            }

            // Remove SKU from Option Category
            if (!String.IsNullOrEmpty(removeItems))
            {
                string[]      productIds     = removeItems.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                bool          displayWarning = false;
                StringBuilder ids            = new StringBuilder();

                // Check if category is not used in variants of product
                foreach (string skuID in productIds)
                {
                    int productId = ValidationHelper.GetInteger(skuID, 0);

                    // Inform user that removing of product is not possible
                    if (VariantHelper.AreCategoriesUsedInVariants(productId, new int[] { categoryId }))
                    {
                        displayWarning = true;
                        ids.Append(";" + skuID);
                    }
                    else
                    {
                        ProductHelper.RemoveOptionCategory(productId, categoryId);
                    }
                }

                if (displayWarning)
                {
                    // Display items which cannot be removed in the selector
                    uniSelector.Value += ids.ToString();
                    ShowWarning(GetString("com.optioncategory.removeproduct"));
                }
                else
                {
                    ShowChangesSaved();
                }
            }
        }

        PreloadUniSelector(true);
    }