Esempio n. 1
0
        void BindGrid()
        {
            var productAttributes = ProductAttributeManager.GetAllProductAttributes();

            gvProductAttributes.DataSource = productAttributes;
            gvProductAttributes.DataBind();
        }
Esempio n. 2
0
        protected void gvProductVariantAttributes_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "UpdateProductVariantAttribute")
            {
                int         index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row   = gvProductVariantAttributes.Rows[index];

                HiddenField    hfProductVariantAttributeId = row.FindControl("hfProductVariantAttributeId") as HiddenField;
                DropDownList   ddlProductAttribute         = row.FindControl("ddlProductAttribute") as DropDownList;
                TextBox        txtTextPrompt           = row.FindControl("txtTextPrompt") as TextBox;
                CheckBox       cbIsRequired            = row.FindControl("cbIsRequired") as CheckBox;
                DropDownList   ddlAttributeControlType = row.FindControl("ddlAttributeControlType") as DropDownList;
                NumericTextBox txtDisplayOrder         = row.FindControl("txtDisplayOrder") as NumericTextBox;

                int    productVariantAttributeId = int.Parse(hfProductVariantAttributeId.Value);
                int    productAttributeId        = int.Parse(ddlProductAttribute.SelectedItem.Value);
                string textPrompt = txtTextPrompt.Text;
                bool   isRequired = cbIsRequired.Checked;
                AttributeControlTypeEnum attributeControlType = (AttributeControlTypeEnum)Enum.ToObject(typeof(AttributeControlTypeEnum), int.Parse(ddlAttributeControlType.SelectedItem.Value));
                int displayOrder = txtDisplayOrder.Value;

                ProductVariantAttribute productVariantAttribute = ProductAttributeManager.GetProductVariantAttributeById(productVariantAttributeId);

                if (productVariantAttribute != null)
                {
                    ProductAttributeManager.UpdateProductVariantAttribute(productVariantAttribute.ProductVariantAttributeId,
                                                                          productVariantAttribute.ProductVariantId, productAttributeId, textPrompt,
                                                                          isRequired, attributeControlType, displayOrder);
                }

                BindAttributes();
                BindCombinations();
                RefreshSelectCombinationControl();
            }
        }
Esempio n. 3
0
        protected void gvProductVariantAttributeValues_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "UpdateProductVariantAttributeValue")
            {
                int         index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row   = gvProductVariantAttributeValues.Rows[index];

                HiddenField    hfProductVariantAttributeValueID = row.FindControl("hfProductVariantAttributeValueID") as HiddenField;
                SimpleTextBox  txtName             = row.FindControl("txtName") as SimpleTextBox;
                DecimalTextBox txtPriceAdjustment  = row.FindControl("txtPriceAdjustment") as DecimalTextBox;
                DecimalTextBox txtWeightAdjustment = row.FindControl("txtWeightAdjustment") as DecimalTextBox;
                CheckBox       cbIsPreSelected     = row.FindControl("cbIsPreSelected") as CheckBox;
                NumericTextBox txtDisplayOrder     = row.FindControl("txtDisplayOrder") as NumericTextBox;

                int     productVariantAttributeValueID = int.Parse(hfProductVariantAttributeValueID.Value);
                string  name             = txtName.Text;
                decimal priceAdjustment  = txtPriceAdjustment.Value;
                decimal weightAdjustment = txtWeightAdjustment.Value;
                bool    isPreSelected    = cbIsPreSelected.Checked;
                int     displayOrder     = txtDisplayOrder.Value;

                ProductVariantAttributeValue productVariantAttributeValue = ProductAttributeManager.GetProductVariantAttributeValueByID(productVariantAttributeValueID);

                if (productVariantAttributeValue != null)
                {
                    ProductAttributeManager.UpdateProductVariantAttributeValue(productVariantAttributeValue.ProductVariantAttributeValueID,
                                                                               productVariantAttributeValue.ProductVariantAttributeID, name,
                                                                               priceAdjustment, weightAdjustment, isPreSelected, displayOrder);
                }

                BindData();
            }
        }
        protected void btnNewProductVariantAttribute_Click(object sender, EventArgs e)
        {
            try
            {
                ProductVariant productVariant = ProductManager.GetProductVariantByID(this.ProductVariantID);
                if (productVariant != null)
                {
                    if (ddlNewProductAttributes.SelectedItem == null)
                    {
                        return;
                    }

                    //TODO check duplicate
                    int productAttributeID = int.Parse(ddlNewProductAttributes.SelectedItem.Value);

                    AttributeControlTypeEnum attributeControlType = (AttributeControlTypeEnum)Enum.ToObject(typeof(AttributeControlTypeEnum), int.Parse(this.ddlAttributeControlType.SelectedItem.Value));

                    ProductVariantAttribute productVariantAttribute = ProductAttributeManager.InsertProductVariantAttribute(productVariant.ProductVariantID,
                                                                                                                            productAttributeID, txtNewTextPrompt.Text, cbNewProductVariantAttributeIsRequired.Checked,
                                                                                                                            attributeControlType, txtNewProductVariantAttributeDisplayOrder.Value);

                    BindData();

                    txtNewProductVariantAttributeDisplayOrder.Value = 1;
                }
            }
            catch (Exception exc)
            {
                ProcessException(exc);
            }
        }
Esempio n. 5
0
        protected void gvCombinations_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "UpdateProductVariantAttributeCombination")
            {
                int         index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row   = gvCombinations.Rows[index];

                HiddenField    hfProductVariantAttributeCombinationId = row.FindControl("hfProductVariantAttributeCombinationId") as HiddenField;
                Label          lblAttributes           = row.FindControl("lblAttributes") as Label;
                Label          lblWarnings             = row.FindControl("lblWarnings") as Label;
                NumericTextBox txtStockQuantity        = row.FindControl("txtStockQuantity") as NumericTextBox;
                CheckBox       cbAllowOutOfStockOrders = row.FindControl("cbAllowOutOfStockOrders") as CheckBox;

                int  productVariantAttributeCombinationId = int.Parse(hfProductVariantAttributeCombinationId.Value);
                int  stockQuantity         = txtStockQuantity.Value;
                bool allowOutOfStockOrders = cbAllowOutOfStockOrders.Checked;

                var combination = ProductAttributeManager.GetProductVariantAttributeCombinationById(productVariantAttributeCombinationId);

                if (combination != null)
                {
                    ProductAttributeManager.UpdateProductVariantAttributeCombination(combination.ProductVariantAttributeCombinationId,
                                                                                     combination.ProductVariantId, combination.AttributesXml,
                                                                                     stockQuantity, allowOutOfStockOrders);
                }

                BindCombinations();
            }
        }
Esempio n. 6
0
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                ProductVariantAttribute productVariantAttribute = ProductAttributeManager.GetProductVariantAttributeById(this.ProductVariantAttributeId);
                if (productVariantAttribute != null)
                {
                    ProductVariantAttributeValue productVariantAttributeValue = ProductAttributeManager.InsertProductVariantAttributeValue(productVariantAttribute.ProductVariantAttributeId,
                                                                                                                                           txtNewName.Text, txtNewPriceAdjustment.Value, txtNewWeightAdjustment.Value,
                                                                                                                                           cbNewIsPreSelected.Checked, txtNewDisplayOrder.Value);

                    SaveLocalizableContent(productVariantAttributeValue);

                    BindData();

                    txtNewName.Text              = string.Empty;
                    txtNewPriceAdjustment.Value  = 0;
                    txtNewWeightAdjustment.Value = 0;
                    txtNewDisplayOrder.Value     = 1;
                }
            }
            catch (Exception exc)
            {
                ProcessException(exc);
            }
        }
        void BindGrid()
        {
            ProductAttributeCollection productAttributes = ProductAttributeManager.GetAllProductAttributes();

            gvProductAttributes.DataSource = productAttributes;
            gvProductAttributes.DataBind();
        }
Esempio n. 8
0
        protected void btnNewProductVariantAttribute_Click(object sender, EventArgs e)
        {
            try
            {
                ProductVariant productVariant = ProductManager.GetProductVariantById(this.ProductVariantId);
                if (productVariant != null)
                {
                    if (ddlNewProductAttributes.SelectedItem == null)
                    {
                        return;
                    }

                    int productAttributeId = int.Parse(ddlNewProductAttributes.SelectedItem.Value);

                    AttributeControlTypeEnum attributeControlType = (AttributeControlTypeEnum)Enum.ToObject(typeof(AttributeControlTypeEnum), int.Parse(this.ddlAttributeControlType.SelectedItem.Value));

                    ProductVariantAttribute productVariantAttribute = ProductAttributeManager.InsertProductVariantAttribute(productVariant.ProductVariantId,
                                                                                                                            productAttributeId, txtNewTextPrompt.Text, cbNewProductVariantAttributeIsRequired.Checked,
                                                                                                                            attributeControlType, txtNewProductVariantAttributeDisplayOrder.Value);

                    BindAttributes();
                    BindCombinations();
                    RefreshSelectCombinationControl();

                    txtNewProductVariantAttributeDisplayOrder.Value = 1;
                }
            }
            catch (Exception exc)
            {
                processAjaxError(exc);
            }
        }
Esempio n. 9
0
        protected void BindCombinations()
        {
            ProductVariant productVariant = ProductManager.GetProductVariantById(this.ProductVariantId);

            if (productVariant != null)
            {
                var productVariantAttributes = productVariant.ProductVariantAttributes;
                if (productVariantAttributes.Count > 0)
                {
                    pnlCombinations.Visible = true;
                    var combinations = ProductAttributeManager.GetAllProductVariantAttributeCombinations(this.ProductVariantId);
                    if (combinations.Count > 0)
                    {
                        gvCombinations.Visible    = true;
                        gvCombinations.DataSource = combinations;
                        gvCombinations.DataBind();
                    }
                    else
                    {
                        gvCombinations.Visible = false;
                    }
                }
                else
                {
                    pnlCombinations.Visible = false;
                }
            }
        }
Esempio n. 10
0
        protected void gvProductVariantAttributeValues_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int productVariantAttributeValueID = (int)gvProductVariantAttributeValues.DataKeys[e.RowIndex]["ProductVariantAttributeValueID"];

            ProductAttributeManager.DeleteProductVariantAttributeValue(productVariantAttributeValueID);
            BindData();
        }
Esempio n. 11
0
        protected void gvCombinations_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int productVariantAttributeCombinationId = (int)gvCombinations.DataKeys[e.RowIndex]["ProductVariantAttributeCombinationId"];

            ProductAttributeManager.DeleteProductVariantAttributeCombination(productVariantAttributeCombinationId);

            BindCombinations();
        }
Esempio n. 12
0
        protected void SaveLocalizableContentGrid(ProductVariantAttributeValue pvav)
        {
            if (pvav == null)
            {
                return;
            }

            if (!this.HasLocalizableContent)
            {
                return;
            }

            foreach (GridViewRow row in gvProductVariantAttributeValues.Rows)
            {
                Repeater rptrLanguageDivs2 = row.FindControl("rptrLanguageDivs2") as Repeater;
                if (rptrLanguageDivs2 != null)
                {
                    HiddenField hfProductVariantAttributeValueId = row.FindControl("hfProductVariantAttributeValueId") as HiddenField;
                    int         pvavId = int.Parse(hfProductVariantAttributeValueId.Value);
                    if (pvavId == pvav.ProductVariantAttributeValueId)
                    {
                        foreach (RepeaterItem item in rptrLanguageDivs2.Items)
                        {
                            if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                            {
                                var txtLocalizedName = (TextBox)item.FindControl("txtLocalizedName");
                                var lblLanguageId    = (Label)item.FindControl("lblLanguageId");

                                int    languageId = int.Parse(lblLanguageId.Text);
                                string name       = txtLocalizedName.Text;

                                bool allFieldsAreEmpty = string.IsNullOrEmpty(name);

                                var content = ProductAttributeManager.GetProductVariantAttributeValueLocalizedByProductVariantAttributeValueIdAndLanguageId(pvav.ProductVariantAttributeValueId, languageId);
                                if (content == null)
                                {
                                    if (!allFieldsAreEmpty && languageId > 0)
                                    {
                                        //only insert if one of the fields are filled out (avoid too many empty records in db...)
                                        content = ProductAttributeManager.InsertProductVariantAttributeValueLocalized(pvav.ProductVariantAttributeValueId,
                                                                                                                      languageId, name);
                                    }
                                }
                                else
                                {
                                    if (languageId > 0)
                                    {
                                        content = ProductAttributeManager.UpdateProductVariantAttributeValueLocalized(content.ProductVariantAttributeValueLocalizedId,
                                                                                                                      content.ProductVariantAttributeValueId, languageId, name);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 13
0
        protected void gvProductVariantAttributes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ProductVariantAttribute productVariantAttribute = (ProductVariantAttribute)e.Row.DataItem;

                Button btnUpdate = e.Row.FindControl("btnUpdate") as Button;
                if (btnUpdate != null)
                {
                    btnUpdate.CommandArgument = e.Row.RowIndex.ToString();
                }

                DropDownList ddlProductAttribute = e.Row.FindControl("ddlProductAttribute") as DropDownList;
                if (ddlProductAttribute != null)
                {
                    ddlProductAttribute.Items.Clear();
                    var productAttributes = ProductAttributeManager.GetAllProductAttributes();
                    foreach (ProductAttribute productAttribute in productAttributes)
                    {
                        ListItem item = new ListItem(productAttribute.Name,
                                                     productAttribute.ProductAttributeId.ToString());
                        ddlProductAttribute.Items.Add(item);
                        if (productAttribute.ProductAttributeId == productVariantAttribute.ProductAttributeId)
                        {
                            item.Selected = true;
                        }
                    }
                }

                DropDownList ddlAttributeControlType = e.Row.FindControl("ddlAttributeControlType") as DropDownList;
                {
                    if (ddlAttributeControlType != null)
                    {
                        CommonHelper.FillDropDownWithEnum(ddlAttributeControlType, typeof(AttributeControlTypeEnum));
                    }
                    CommonHelper.SelectListItem(ddlAttributeControlType, productVariantAttribute.AttributeControlTypeId);
                }

                HyperLink hlAttributeValues = e.Row.FindControl("hlAttributeValues") as HyperLink;
                if (hlAttributeValues != null)
                {
                    if (productVariantAttribute.ShouldHaveValues)
                    {
                        hlAttributeValues.Visible     = true;
                        hlAttributeValues.NavigateUrl = string.Format("{0}ProductVariantAttributeValues.aspx?ProductVariantAttributeID={1}",
                                                                      CommonHelper.GetStoreAdminLocation(),
                                                                      productVariantAttribute.ProductVariantAttributeId);
                        hlAttributeValues.Text = string.Format(GetLocaleResourceString("Admin.ProductVariantAttributes.Values.Count"), productVariantAttribute.ProductVariantAttributeValues.Count);
                    }
                    else
                    {
                        hlAttributeValues.Visible = false;
                    }
                }
            }
        }
Esempio n. 14
0
        protected void gvProductVariantAttributes_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int productVariantAttributeId = (int)gvProductVariantAttributes.DataKeys[e.RowIndex]["ProductVariantAttributeId"];

            ProductAttributeManager.DeleteProductVariantAttribute(productVariantAttributeId);

            BindAttributes();
            BindCombinations();
            RefreshSelectCombinationControl();
        }
        private void BindData()
        {
            ProductAttribute productAttribute = ProductAttributeManager.GetProductAttributeByID(this.ProductAttributeID);

            if (productAttribute != null)
            {
                this.txtName.Text        = productAttribute.Name;
                this.txtDescription.Text = productAttribute.Description;
            }
        }
 public IHttpActionResult UpdateProductCategory([FromBody] ProductAttributeViewModel productAttribute)
 {
     try
     {
         return(Ok(ProductAttributeManager.UpdateProductAttribute(productAttribute)));
     }
     catch (Exception exception)
     {
         return(InternalServerError(exception));
     }
 }
 public IHttpActionResult GetProductAttribute()
 {
     try
     {
         return(Ok(ProductAttributeManager.GetProductAttribute()));
     }
     catch (Exception exception)
     {
         return(InternalServerError(exception));
     }
 }
 public IHttpActionResult GetProductAttributeList([FromBody] SearchViewModel viewModel)
 {
     try
     {
         return(Ok(ProductAttributeManager.GetProductAttributeList(viewModel)));
     }
     catch (Exception exception)
     {
         return(InternalServerError(exception));
     }
 }
 public IHttpActionResult GetProductAttributeBySubCategoryId([FromBody] IdViewModel idViewModel)
 {
     try
     {
         return(Ok(ProductAttributeManager.GetProductAtrributeBySubCategory(idViewModel.Id)));
     }
     catch (Exception exception)
     {
         return(InternalServerError(exception));
     }
 }
 public IHttpActionResult GetOptionsByAttributeId([FromBody] IdViewModel idViewModel)
 {
     try
     {
         return(Ok(ProductAttributeManager.GetOptionByID(idViewModel.Id)));
     }
     catch (Exception exception)
     {
         return(InternalServerError(exception));
     }
 }
 public IHttpActionResult AddProductAttribute([FromBody] ProductAttributeViewModel viewModel)
 {
     try
     {
         return(Ok(ProductAttributeManager.AddProductAttribute(viewModel)));
     }
     catch (Exception exception)
     {
         return(InternalServerError(exception));
     }
 }
 public IHttpActionResult DeleteAttributeOption([FromBody] IdViewModel idViewModel)
 {
     try
     {
         ProductAttributeManager.DeleteProductOptionById(idViewModel.Id);
         return(Ok());
     }
     catch (Exception exception)
     {
         return(InternalServerError(exception));
     }
 }
Esempio n. 23
0
 protected void DeleteButton_Click(object sender, EventArgs e)
 {
     try
     {
         ProductAttributeManager.DeleteProductAttribute(this.ProductAttributeID);
         Response.Redirect("ProductAttributes.aspx");
     }
     catch (Exception exc)
     {
         ProcessException(exc);
     }
 }
Esempio n. 24
0
        private void FillDropDowns()
        {
            this.ddlNewProductAttributes.Items.Clear();
            var productAttributes = ProductAttributeManager.GetAllProductAttributes();

            foreach (ProductAttribute pa in productAttributes)
            {
                ListItem item2 = new ListItem(pa.Name, pa.ProductAttributeId.ToString());
                this.ddlNewProductAttributes.Items.Add(item2);
            }

            CommonHelper.FillDropDownWithEnum(this.ddlAttributeControlType, typeof(AttributeControlTypeEnum));
        }
        public ProductAttribute SaveInfo()
        {
            ProductAttribute productAttribute = ProductAttributeManager.GetProductAttributeByID(this.ProductAttributeID);

            if (productAttribute != null)
            {
                productAttribute = ProductAttributeManager.UpdateProductAttribute(productAttribute.ProductAttributeID,
                                                                                  txtName.Text, txtDescription.Text);
            }
            else
            {
                productAttribute = ProductAttributeManager.InsertProductAttribute(txtName.Text, txtDescription.Text);
            }
            return(productAttribute);
        }
Esempio n. 26
0
        protected void SaveLocalizableContent(ProductAttribute productAttribute)
        {
            if (productAttribute == null)
            {
                return;
            }

            if (!this.HasLocalizableContent)
            {
                return;
            }

            foreach (RepeaterItem item in rptrLanguageDivs.Items)
            {
                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                {
                    var txtLocalizedName        = (TextBox)item.FindControl("txtLocalizedName");
                    var txtLocalizedDescription = (TextBox)item.FindControl("txtLocalizedDescription");
                    var lblLanguageId           = (Label)item.FindControl("lblLanguageId");

                    int    languageId  = int.Parse(lblLanguageId.Text);
                    string name        = txtLocalizedName.Text;
                    string description = txtLocalizedDescription.Text;

                    bool allFieldsAreEmpty = (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(description));

                    var content = ProductAttributeManager.GetProductAttributeLocalizedByProductAttributeIdAndLanguageId(productAttribute.ProductAttributeId, languageId);
                    if (content == null)
                    {
                        if (!allFieldsAreEmpty && languageId > 0)
                        {
                            //only insert if one of the fields are filled out (avoid too many empty records in db...)
                            content = ProductAttributeManager.InsertProductAttributeLocalized(productAttribute.ProductAttributeId,
                                                                                              languageId, name, description);
                        }
                    }
                    else
                    {
                        if (languageId > 0)
                        {
                            content = ProductAttributeManager.UpdateProductAttributeLocalized(content.ProductAttributeLocalizedId, content.ProductAttributeId,
                                                                                              languageId, name, description);
                        }
                    }
                }
            }
        }
Esempio n. 27
0
        private void BindData()
        {
            ProductVariantAttribute productVariantAttribute = ProductAttributeManager.GetProductVariantAttributeById(this.ProductVariantAttributeId);

            if (productVariantAttribute != null)
            {
                if (this.HasLocalizableContent)
                {
                    var languages = this.GetLocalizableLanguagesSupported();
                    rptrLanguageTabs.DataSource = languages;
                    rptrLanguageTabs.DataBind();
                    rptrLanguageDivs.DataSource = languages;
                    rptrLanguageDivs.DataBind();
                }

                ProductVariant productVariant = productVariantAttribute.ProductVariant;
                if (productVariant == null)
                {
                    Response.Redirect("Products.aspx");
                }
                ProductAttribute productAttribute = productVariantAttribute.ProductAttribute;
                if (productAttribute == null)
                {
                    Response.Redirect("Products.aspx");
                }

                this.lblTitle.Text            = string.Format(GetLocaleResourceString("Admin.ProductVariantAttributeValues.AddEdit"), Server.HtmlEncode(productAttribute.Name), Server.HtmlEncode(productVariant.FullProductName));
                this.hlProductURL.NavigateUrl = CommonHelper.GetStoreAdminLocation() + "ProductVariantDetails.aspx?ProductVariantID=" + productVariant.ProductVariantId;

                var productVariantAttributeValues = ProductAttributeManager.GetProductVariantAttributeValues(productVariantAttribute.ProductVariantAttributeId);
                if (productVariantAttributeValues.Count > 0)
                {
                    this.gvProductVariantAttributeValues.Visible    = true;
                    this.gvProductVariantAttributeValues.DataSource = productVariantAttributeValues;
                    this.gvProductVariantAttributeValues.DataBind();
                }
                else
                {
                    this.gvProductVariantAttributeValues.Visible = false;
                }
            }
            else
            {
                Response.Redirect("Products.aspx");
            }
        }
Esempio n. 28
0
        public ProductAttribute SaveInfo()
        {
            ProductAttribute productAttribute = ProductAttributeManager.GetProductAttributeById(this.ProductAttributeId, 0);

            if (productAttribute != null)
            {
                productAttribute = ProductAttributeManager.UpdateProductAttribute(productAttribute.ProductAttributeId,
                                                                                  txtName.Text, txtDescription.Text);
            }
            else
            {
                productAttribute = ProductAttributeManager.InsertProductAttribute(txtName.Text, txtDescription.Text);
            }

            SaveLocalizableContent(productAttribute);

            return(productAttribute);
        }
Esempio n. 29
0
        private void BindData()
        {
            ProductAttribute productAttribute = ProductAttributeManager.GetProductAttributeById(this.ProductAttributeId, 0);

            if (this.HasLocalizableContent)
            {
                var languages = this.GetLocalizableLanguagesSupported();
                rptrLanguageTabs.DataSource = languages;
                rptrLanguageTabs.DataBind();
                rptrLanguageDivs.DataSource = languages;
                rptrLanguageDivs.DataBind();
            }

            if (productAttribute != null)
            {
                this.txtName.Text        = productAttribute.Name;
                this.txtDescription.Text = productAttribute.Description;
            }
        }
Esempio n. 30
0
        protected void btnNewProductVariantAttributeCombination_Click(object sender, EventArgs e)
        {
            try
            {
                ProductVariant productVariant = ProductManager.GetProductVariantById(this.ProductVariantId);
                if (productVariant != null)
                {
                    string attributes            = ctrlSelectProductAttributes.SelectedAttributes;
                    int    stockQuantity         = txtStockQuantity.Value;
                    bool   allowOutOfStockOrders = cbAllowOutOfStockOrders.Checked;

                    List <string> warnings = ShoppingCartManager.GetShoppingCartItemAttributeWarnings(ShoppingCartTypeEnum.ShoppingCart,
                                                                                                      productVariant.ProductVariantId, attributes, 1, false);
                    if (warnings.Count > 0)
                    {
                        StringBuilder warningsSb = new StringBuilder();
                        for (int i = 0; i < warnings.Count; i++)
                        {
                            warningsSb.Append(Server.HtmlEncode(warnings[i]));
                            if (i != warnings.Count - 1)
                            {
                                warningsSb.Append("<br />");
                            }
                        }

                        pnlCombinationWarningsr.Visible = true;
                        lCombinationWarnings.Text       = warningsSb.ToString();
                    }
                    else
                    {
                        var combination = ProductAttributeManager.InsertProductVariantAttributeCombination(productVariant.ProductVariantId,
                                                                                                           attributes,
                                                                                                           stockQuantity,
                                                                                                           allowOutOfStockOrders);
                    }
                    BindCombinations();
                }
            }
            catch (Exception exc)
            {
                processAjaxError(exc);
            }
        }