public void CreateAttributeControls() { var productVariant = ProductManager.GetProductVariantById(this.ProductVariantId); if (productVariant != null) { this.phAttributes.Controls.Clear(); var productVariantAttributes = productVariant.ProductVariantAttributes; if (productVariantAttributes.Count > 0) { StringBuilder adjustmentTableScripts = new StringBuilder(); StringBuilder attributeScripts = new StringBuilder(); this.Visible = true; foreach (var attribute in productVariantAttributes) { var divAttribute = new Panel(); var attributeTitle = new Label(); if (attribute.IsRequired) attributeTitle.Text = "<span>*</span> "; //text prompt / title string textPrompt = string.Empty; if (!string.IsNullOrEmpty(attribute.TextPrompt)) textPrompt = attribute.TextPrompt; else textPrompt = attribute.ProductAttribute.LocalizedName; attributeTitle.Text += Server.HtmlEncode(textPrompt); attributeTitle.Style.Add("font-weight", "bold"); //description if (!string.IsNullOrEmpty(attribute.ProductAttribute.LocalizedDescription)) attributeTitle.Text += string.Format("<br /><span>{0}</span>", Server.HtmlEncode(attribute.ProductAttribute.LocalizedDescription)); bool addBreak = true; switch (attribute.AttributeControlType) { case AttributeControlTypeEnum.TextBox: { addBreak = false; } break; default: break; } if (addBreak) { attributeTitle.Text += "<br />"; } else { attributeTitle.Text += " "; } divAttribute.Controls.Add(attributeTitle); phAttributes.Controls.Add(divAttribute); string controlId = string.Format("{0}_{1}", attribute.ProductAttribute.ProductAttributeId, attribute.ProductVariantAttributeId); switch (attribute.AttributeControlType) { case AttributeControlTypeEnum.DropdownList: { var ddlAttributes = new DropDownList(); ddlAttributes.ID = controlId; divAttribute.Controls.Add(ddlAttributes); ddlAttributes.Items.Clear(); if (!attribute.IsRequired) { ddlAttributes.Items.Add(new ListItem("---", "0")); } var pvaValues = attribute.ProductVariantAttributeValues; adjustmentTableScripts.AppendFormat("{0}['{1}'] = new Array(", AdjustmentTableName, ddlAttributes.ClientID); attributeScripts.AppendFormat("$('#{0}').change(function(){{{1}();}});\n", ddlAttributes.ClientID, AdjustmentFuncName); bool preSelectedSet = false; foreach (var pvaValue in pvaValues) { string pvaValueName = pvaValue.LocalizedName; if (!this.HidePrices && (!SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") || (NopContext.Current.User != null && !NopContext.Current.User.IsGuest))) { decimal taxRate = decimal.Zero; decimal priceAdjustmentBase = TaxManager.GetPrice(productVariant, pvaValue.PriceAdjustment, out taxRate); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if(priceAdjustmentBase > decimal.Zero) { pvaValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment, false, false)); } adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0},", (float)priceAdjustment); } var pvaValueItem = new ListItem(pvaValueName, pvaValue.ProductVariantAttributeValueId.ToString()); if (!preSelectedSet && pvaValue.IsPreSelected) { pvaValueItem.Selected = pvaValue.IsPreSelected; preSelectedSet = true; } ddlAttributes.Items.Add(pvaValueItem); } adjustmentTableScripts.Length -= 1; adjustmentTableScripts.Append(");\n"); } break; case AttributeControlTypeEnum.RadioList: { var rblAttributes = new RadioButtonList(); rblAttributes.ID = controlId; divAttribute.Controls.Add(rblAttributes); rblAttributes.Items.Clear(); var pvaValues = attribute.ProductVariantAttributeValues; bool preSelectedSet = false; foreach (var pvaValue in pvaValues) { string pvaValueName = pvaValue.LocalizedName; if (!this.HidePrices && (!SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") || (NopContext.Current.User != null && !NopContext.Current.User.IsGuest))) { decimal taxRate = decimal.Zero; decimal priceAdjustmentBase = TaxManager.GetPrice(productVariant, pvaValue.PriceAdjustment, out taxRate); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if(priceAdjustmentBase > decimal.Zero) { pvaValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment, false, false)); } adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0}['{1}_{2}'] = {3};\n", AdjustmentTableName, rblAttributes.ClientID, rblAttributes.Items.Count, (float)priceAdjustment); attributeScripts.AppendFormat("$('#{0}_{1}').click(function(){{{2}();}});\n", rblAttributes.ClientID, rblAttributes.Items.Count, AdjustmentFuncName); } var pvaValueItem = new ListItem(Server.HtmlEncode(pvaValueName), pvaValue.ProductVariantAttributeValueId.ToString()); if (!preSelectedSet && pvaValue.IsPreSelected) { pvaValueItem.Selected = pvaValue.IsPreSelected; preSelectedSet = true; } rblAttributes.Items.Add(pvaValueItem); } } break; case AttributeControlTypeEnum.Checkboxes: { var cblAttributes = new CheckBoxList(); cblAttributes.ID = controlId; divAttribute.Controls.Add(cblAttributes); cblAttributes.Items.Clear(); var pvaValues = attribute.ProductVariantAttributeValues; foreach (var pvaValue in pvaValues) { string pvaValueName = pvaValue.LocalizedName; if (!this.HidePrices && (!SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") || (NopContext.Current.User != null && !NopContext.Current.User.IsGuest))) { decimal taxRate = decimal.Zero; decimal priceAdjustmentBase = TaxManager.GetPrice(productVariant, pvaValue.PriceAdjustment, out taxRate); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) pvaValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment, false, false)); adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0}['{1}_{2}'] = {3};\n", AdjustmentTableName, cblAttributes.ClientID, cblAttributes.Items.Count, (float)priceAdjustment); attributeScripts.AppendFormat("$('#{0}_{1}').click(function(){{{2}();}});\n", cblAttributes.ClientID, cblAttributes.Items.Count, AdjustmentFuncName); } var pvaValueItem = new ListItem(Server.HtmlEncode(pvaValueName), pvaValue.ProductVariantAttributeValueId.ToString()); pvaValueItem.Selected = pvaValue.IsPreSelected; cblAttributes.Items.Add(pvaValueItem); } } break; case AttributeControlTypeEnum.TextBox: { var txtAttribute = new TextBox(); txtAttribute.Width = SettingManager.GetSettingValueInteger("ProductAttribute.Textbox.Width", 300); txtAttribute.ID = controlId; divAttribute.Controls.Add(txtAttribute); } break; case AttributeControlTypeEnum.MultilineTextbox: { var txtAttribute = new TextBox(); txtAttribute.ID = controlId; txtAttribute.TextMode = TextBoxMode.MultiLine; txtAttribute.Width = SettingManager.GetSettingValueInteger("ProductAttribute.MultiTextbox.Width", 300); txtAttribute.Height = SettingManager.GetSettingValueInteger("ProductAttribute.MultiTextbox.Height", 150); divAttribute.Controls.Add(txtAttribute); } break; case AttributeControlTypeEnum.Datepicker: { var datePicker = new NopDatePicker(); //changes these properties in order to change year range datePicker.FirstYear = DateTime.Now.Year; datePicker.LastYear = DateTime.Now.Year + 1; datePicker.ID = controlId; divAttribute.Controls.Add(datePicker); } break; default: break; } } lblAdjustmentTableScripts.Text = adjustmentTableScripts.ToString(); lblAttributeScripts.Text = attributeScripts.ToString(); } else { this.Visible = false; } } else { this.Visible = false; } }
public void CreateAttributeControls() { this.phAttributes.Controls.Clear(); var checkoutAttributes = GetCheckoutAttributes(); if (checkoutAttributes.Count > 0) { this.Visible = true; foreach (var attribute in checkoutAttributes) { var divAttribute = new Panel(); var attributeTitle = new Label(); if (attribute.IsRequired) attributeTitle.Text = "<span>*</span> "; //text prompt / title string textPrompt = string.Empty; if (!string.IsNullOrEmpty(attribute.LocalizedTextPrompt)) textPrompt = attribute.LocalizedTextPrompt; else textPrompt = attribute.LocalizedName; attributeTitle.Text += Server.HtmlEncode(textPrompt); attributeTitle.Style.Add("font-weight", "bold"); bool addBreak = true; switch (attribute.AttributeControlType) { case AttributeControlTypeEnum.TextBox: { addBreak = false; } break; default: break; } if (addBreak) { attributeTitle.Text += "<br />"; } else { attributeTitle.Text += " "; } divAttribute.Controls.Add(attributeTitle); string controlId = attribute.CheckoutAttributeId.ToString(); switch (attribute.AttributeControlType) { case AttributeControlTypeEnum.DropdownList: { //add control items var ddlAttributes = new DropDownList(); ddlAttributes.ID = controlId; if (!attribute.IsRequired) { ddlAttributes.Items.Add(new ListItem("---", "0")); } var caValues = attribute.CheckoutAttributeValues; bool preSelectedSet = false; foreach (var caValue in caValues) { string caValueName = caValue.LocalizedName; if (!this.HidePrices) { decimal priceAdjustmentBase = TaxManager.GetCheckoutAttributePrice(caValue); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) caValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment)); } var caValueItem = new ListItem(caValueName, caValue.CheckoutAttributeValueId.ToString()); if (!preSelectedSet && caValue.IsPreSelected) { caValueItem.Selected = caValue.IsPreSelected; preSelectedSet = true; } ddlAttributes.Items.Add(caValueItem); } //set already selected attributes if (NopContext.Current.User != null) { string selectedCheckoutAttributes = NopContext.Current.User.CheckoutAttributes; if (!String.IsNullOrEmpty(selectedCheckoutAttributes)) { //clear default selection foreach (ListItem item in ddlAttributes.Items) { item.Selected = false; } //select new values var selectedCaValues = CheckoutAttributeHelper.ParseCheckoutAttributeValues(selectedCheckoutAttributes); foreach (var caValue in selectedCaValues) { foreach (ListItem item in ddlAttributes.Items) { if (caValue.CheckoutAttributeValueId == Convert.ToInt32(item.Value)) { item.Selected = true; } } } } } divAttribute.Controls.Add(ddlAttributes); } break; case AttributeControlTypeEnum.RadioList: { var rblAttributes = new RadioButtonList(); rblAttributes.ID = controlId; var caValues = attribute.CheckoutAttributeValues; bool preSelectedSet = false; foreach (var caValue in caValues) { string caValueName = caValue.LocalizedName; if (!this.HidePrices) { decimal priceAdjustmentBase = TaxManager.GetCheckoutAttributePrice(caValue); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) caValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment)); } var caValueItem = new ListItem(Server.HtmlEncode(caValueName), caValue.CheckoutAttributeValueId.ToString()); if (!preSelectedSet && caValue.IsPreSelected) { caValueItem.Selected = caValue.IsPreSelected; preSelectedSet = true; } rblAttributes.Items.Add(caValueItem); } //set already selected attributes if (NopContext.Current.User != null) { string selectedCheckoutAttributes = NopContext.Current.User.CheckoutAttributes; if (!String.IsNullOrEmpty(selectedCheckoutAttributes)) { //clear default selection foreach (ListItem item in rblAttributes.Items) { item.Selected = false; } //select new values var selectedCaValues = CheckoutAttributeHelper.ParseCheckoutAttributeValues(selectedCheckoutAttributes); foreach (var caValue in selectedCaValues) { foreach (ListItem item in rblAttributes.Items) { if (caValue.CheckoutAttributeValueId == Convert.ToInt32(item.Value)) { item.Selected = true; } } } } } divAttribute.Controls.Add(rblAttributes); } break; case AttributeControlTypeEnum.Checkboxes: { var cblAttributes = new CheckBoxList(); cblAttributes.ID = controlId; var caValues = attribute.CheckoutAttributeValues; foreach (var caValue in caValues) { string caValueName = caValue.LocalizedName; if (!this.HidePrices) { decimal priceAdjustmentBase = TaxManager.GetCheckoutAttributePrice(caValue); decimal priceAdjustment = CurrencyManager.ConvertCurrency(priceAdjustmentBase, CurrencyManager.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) caValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment)); } var caValueItem = new ListItem(Server.HtmlEncode(caValueName), caValue.CheckoutAttributeValueId.ToString()); caValueItem.Selected = caValue.IsPreSelected; cblAttributes.Items.Add(caValueItem); } //set already selected attributes if (NopContext.Current.User != null) { string selectedCheckoutAttributes = NopContext.Current.User.CheckoutAttributes; if (!String.IsNullOrEmpty(selectedCheckoutAttributes)) { //clear default selection foreach (ListItem item in cblAttributes.Items) { item.Selected = false; } //select new values var selectedCaValues = CheckoutAttributeHelper.ParseCheckoutAttributeValues(selectedCheckoutAttributes); foreach (var caValue in selectedCaValues) { foreach (ListItem item in cblAttributes.Items) { if (caValue.CheckoutAttributeValueId == Convert.ToInt32(item.Value)) { item.Selected = true; } } } } } divAttribute.Controls.Add(cblAttributes); } break; case AttributeControlTypeEnum.TextBox: { var txtAttribute = new TextBox(); txtAttribute.Width = SettingManager.GetSettingValueInteger("CheckoutAttribute.Textbox.Width", 300); txtAttribute.ID = controlId; //set already selected attributes if (NopContext.Current.User != null) { string selectedCheckoutAttributes = NopContext.Current.User.CheckoutAttributes; if (!String.IsNullOrEmpty(selectedCheckoutAttributes)) { //clear default selection txtAttribute.Text = string.Empty; //select new values var enteredText = CheckoutAttributeHelper.ParseValues(selectedCheckoutAttributes,attribute.CheckoutAttributeId); if (enteredText.Count > 0) { txtAttribute.Text = enteredText[0]; } } } divAttribute.Controls.Add(txtAttribute); } break; case AttributeControlTypeEnum.MultilineTextbox: { var txtAttribute = new TextBox(); txtAttribute.ID = controlId; txtAttribute.TextMode = TextBoxMode.MultiLine; txtAttribute.Width = SettingManager.GetSettingValueInteger("CheckoutAttribute.MultiTextbox.Width", 300); txtAttribute.Height = SettingManager.GetSettingValueInteger("CheckoutAttribute.MultiTextbox.Height", 150); //set already selected attributes if (NopContext.Current.User != null) { string selectedCheckoutAttributes = NopContext.Current.User.CheckoutAttributes; if (!String.IsNullOrEmpty(selectedCheckoutAttributes)) { //clear default selection txtAttribute.Text = string.Empty; //select new values var enteredText = CheckoutAttributeHelper.ParseValues(selectedCheckoutAttributes, attribute.CheckoutAttributeId); if (enteredText.Count > 0) { txtAttribute.Text = enteredText[0]; } } } divAttribute.Controls.Add(txtAttribute); } break; case AttributeControlTypeEnum.Datepicker: { var datePicker = new NopDatePicker(); //changes these properties in order to change year range datePicker.FirstYear = DateTime.Now.Year; datePicker.LastYear = DateTime.Now.Year + 1; datePicker.ID = controlId; divAttribute.Controls.Add(datePicker); } break; default: break; } phAttributes.Controls.Add(divAttribute); } } else { this.Visible = false; } }
public void CreateAttributeControls() { var productVariant = this.ProductService.GetProductVariantById(this.ProductVariantId); if (productVariant != null) { this.phAttributes.Controls.Clear(); var productVariantAttributes = productVariant.ProductVariantAttributes; if (productVariantAttributes.Count > 0) { StringBuilder adjustmentTableScripts = new StringBuilder(); StringBuilder attributeScripts = new StringBuilder(); this.Visible = true; foreach (var attribute in productVariantAttributes) { var divAttribute = new Panel(); var attributeTitle = new Label(); if (attribute.IsRequired) attributeTitle.Text = "<span>*</span> "; //text prompt / title string textPrompt = string.Empty; if (!string.IsNullOrEmpty(attribute.TextPrompt)) textPrompt = attribute.TextPrompt; else textPrompt = attribute.ProductAttribute.LocalizedName; attributeTitle.Text += Server.HtmlEncode(textPrompt); attributeTitle.Style.Add("font-weight", "bold"); //description if (!string.IsNullOrEmpty(attribute.ProductAttribute.LocalizedDescription)) attributeTitle.Text += string.Format("<br /><span>{0}</span>", Server.HtmlEncode(attribute.ProductAttribute.LocalizedDescription)); bool addBreak = true; switch (attribute.AttributeControlType) { case AttributeControlTypeEnum.TextBox: { addBreak = false; } break; default: break; } if (addBreak) { attributeTitle.Text += "<br />"; } else { attributeTitle.Text += " "; } divAttribute.Controls.Add(attributeTitle); phAttributes.Controls.Add(divAttribute); string controlId = string.Format("{0}_{1}", attribute.ProductAttribute.ProductAttributeId, attribute.ProductVariantAttributeId); switch (attribute.AttributeControlType) { case AttributeControlTypeEnum.DropdownList: { var ddlAttributes = new DropDownList(); ddlAttributes.CssClass = "DropDownListStyle"; ddlAttributes.ID = controlId; ddlAttributes.Attributes.Add("onchange", "getMethod1(this)");//�������˵����onchange�¼� divAttribute.Controls.Add(ddlAttributes); ddlAttributes.Items.Clear(); //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { adjustmentTableScripts.AppendFormat("{0}['{1}'] = new Array(", AdjustmentTableName, ddlAttributes.ClientID); attributeScripts.AppendFormat("$('#{0}').change(function(){{{1}();}});\n", ddlAttributes.ClientID, AdjustmentFuncName); } int numberOfJsArrayItems = 0; if (!attribute.IsRequired) { ddlAttributes.Items.Add(new ListItem("---", "0")); //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0},", decimal.Zero); numberOfJsArrayItems++; } } var pvaValues = attribute.ProductVariantAttributeValues; //values bool preSelectedSet = false; foreach (var pvaValue in pvaValues) { string pvaValueName = pvaValue.LocalizedName; //display price if allowed if (!this.HidePrices && (!this.SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") || (NopContext.Current.User != null && !NopContext.Current.User.IsGuest))) { decimal taxRate = decimal.Zero; decimal priceAdjustmentBase = this.TaxService.GetPrice(productVariant, pvaValue.PriceAdjustment, out taxRate); decimal priceAdjustment = this.CurrencyService.ConvertCurrency(priceAdjustmentBase, this.CurrencyService.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) { pvaValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment, false, false)); } else if (priceAdjustmentBase < decimal.Zero) { pvaValueName += string.Format(" [-{0}]", PriceHelper.FormatPrice(-priceAdjustment, false, false)); } //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0},", (float)priceAdjustment); numberOfJsArrayItems++; } } var pvaValueItem = new ListItem(pvaValueName, pvaValue.ProductVariantAttributeValueId.ToString()); if (!preSelectedSet && pvaValue.IsPreSelected) { pvaValueItem.Selected = pvaValue.IsPreSelected; preSelectedSet = true; } ddlAttributes.Items.Add(pvaValueItem); //������� ���ڴ洢��Ʒ����ֵ pvaValueItem.Attributes["pvId"] = ProductVariantId.ToString(); pvaValueItem.Attributes["headId"] = pvaValue.ProductVariantAttributeId.ToString(); pvaValueItem.Attributes["footId"] = pvaValue.ProductVariantAttributeValueId.ToString(); } //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { //If you create an array with a single numeric parameter, that number is used for specifying the number of elements in this array. //so have a little hack here (we need at least two elements) if (numberOfJsArrayItems == 1) { adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0},", decimal.Zero); } } //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { adjustmentTableScripts.Length -= 1; adjustmentTableScripts.Append(");\n"); } } break; case AttributeControlTypeEnum.RadioList: { var rblAttributes = new RadioButtonList(); rblAttributes.CssClass = "RadioListStyle"; rblAttributes.ID = controlId; rblAttributes.Attributes.Add("onclick", "getMethod2(this)");//����ѡ����Ӽ����¼� divAttribute.Controls.Add(rblAttributes); rblAttributes.Items.Clear(); var pvaValues = attribute.ProductVariantAttributeValues; bool preSelectedSet = false; foreach (var pvaValue in pvaValues) { string pvaValueName = pvaValue.LocalizedName; //display price if allowed if (!this.HidePrices && (!this.SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") || (NopContext.Current.User != null && !NopContext.Current.User.IsGuest))) { decimal taxRate = decimal.Zero; decimal priceAdjustmentBase = this.TaxService.GetPrice(productVariant, pvaValue.PriceAdjustment, out taxRate); decimal priceAdjustment = this.CurrencyService.ConvertCurrency(priceAdjustmentBase, this.CurrencyService.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) { pvaValueName += string.Format(" [+{0}]",PriceHelper.FormatPrice(priceAdjustment, false, false)); } else if (priceAdjustmentBase < decimal.Zero) { pvaValueName += string.Format(" [-{0}]", PriceHelper.FormatPrice(-priceAdjustment, false, false)); } //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0}['{1}_{2}'] = {3};\n", AdjustmentTableName, rblAttributes.ClientID, rblAttributes.Items.Count, (float)priceAdjustment); attributeScripts.AppendFormat("$('#{0}_{1}').click(function(){{{2}();}});\n", rblAttributes.ClientID, rblAttributes.Items.Count, AdjustmentFuncName); } } var pvaValueItem = new ListItem(Server.HtmlEncode(pvaValueName), pvaValue.ProductVariantAttributeValueId.ToString()); if (!preSelectedSet && pvaValue.IsPreSelected) { pvaValueItem.Selected = pvaValue.IsPreSelected; preSelectedSet = true; } rblAttributes.Items.Add(pvaValueItem); //������� ���ڴ洢��Ʒ����ֵ pvaValueItem.Attributes["pvId"] = ProductVariantId.ToString(); pvaValueItem.Attributes["headId"] = pvaValue.ProductVariantAttributeId.ToString(); pvaValueItem.Attributes["footId"] = pvaValue.ProductVariantAttributeValueId.ToString(); } } break; case AttributeControlTypeEnum.Checkboxes: { var cblAttributes = new CheckBoxList(); cblAttributes.CssClass = "CheckBoxListStyle"; cblAttributes.ID = controlId; cblAttributes.Attributes.Add("onclick", "getMethod3(this)");//Ϊ��ѡ����Ӽ����¼� divAttribute.Controls.Add(cblAttributes); cblAttributes.Items.Clear(); //values var pvaValues = attribute.ProductVariantAttributeValues; foreach (var pvaValue in pvaValues) { string pvaValueName = pvaValue.LocalizedName; //display price if allowed if (!this.HidePrices && (!this.SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") || (NopContext.Current.User != null && !NopContext.Current.User.IsGuest))) { decimal taxRate = decimal.Zero; decimal priceAdjustmentBase = this.TaxService.GetPrice(productVariant, pvaValue.PriceAdjustment, out taxRate); decimal priceAdjustment = this.CurrencyService.ConvertCurrency(priceAdjustmentBase, this.CurrencyService.PrimaryStoreCurrency, NopContext.Current.WorkingCurrency); if (priceAdjustmentBase > decimal.Zero) { pvaValueName += string.Format(" [+{0}]", PriceHelper.FormatPrice(priceAdjustment, false, false)); } else if (priceAdjustmentBase < decimal.Zero) { pvaValueName += string.Format(" [-{0}]", PriceHelper.FormatPrice(-priceAdjustment, false, false)); } //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { adjustmentTableScripts.AppendFormat(CultureInfo.InvariantCulture, "{0}['{1}_{2}'] = {3};\n", AdjustmentTableName, cblAttributes.ClientID, cblAttributes.Items.Count, (float)priceAdjustment); attributeScripts.AppendFormat("$('#{0}_{1}').click(function(){{{2}();}});\n", cblAttributes.ClientID, cblAttributes.Items.Count, AdjustmentFuncName); } } var pvaValueItem = new ListItem(Server.HtmlEncode(pvaValueName), pvaValue.ProductVariantAttributeValueId.ToString()); pvaValueItem.Selected = pvaValue.IsPreSelected; cblAttributes.Items.Add(pvaValueItem); //������� ���ڴ洢��Ʒ����ֵ pvaValueItem.Attributes["pvId"] = ProductVariantId.ToString(); pvaValueItem.Attributes["headId"] = pvaValue.ProductVariantAttributeId.ToString(); pvaValueItem.Attributes["footId"] = pvaValue.ProductVariantAttributeValueId.ToString(); } } break; case AttributeControlTypeEnum.TextBox: { var txtAttribute = new TextBox(); txtAttribute.CssClass = "TextBoxStyle"; txtAttribute.Width = this.SettingManager.GetSettingValueInteger("ProductAttribute.Textbox.Width", 300); txtAttribute.ID = controlId; txtAttribute.Attributes.Add("onblur", "getMethod4(this)"); txtAttribute.Attributes["pvId"] = ProductVariantId.ToString(); txtAttribute.Attributes["headId"] = attribute.ProductVariantAttributeId.ToString(); divAttribute.Controls.Add(txtAttribute); } break; case AttributeControlTypeEnum.MultilineTextbox: { var txtAttribute = new TextBox(); txtAttribute.CssClass = "MultilineTextboxStyle"; txtAttribute.ID = controlId; txtAttribute.Attributes.Add("onblur", "getMethod5(this)"); txtAttribute.TextMode = TextBoxMode.MultiLine; txtAttribute.Width = this.SettingManager.GetSettingValueInteger("ProductAttribute.MultiTextbox.Width", 300); txtAttribute.Height = this.SettingManager.GetSettingValueInteger("ProductAttribute.MultiTextbox.Height", 150); txtAttribute.Attributes["pvId"] = ProductVariantId.ToString(); txtAttribute.Attributes["headId"] = attribute.ProductVariantAttributeId.ToString(); divAttribute.Controls.Add(txtAttribute); } break; case AttributeControlTypeEnum.Datepicker: { var datePicker = new NopDatePicker(); datePicker.productVariantIdDataTrans = ProductVariantId.ToString(); datePicker.headIdDataTrans = attribute.ProductVariantAttributeId.ToString(); //changes these properties in order to change year range datePicker.FirstYear = DateTime.Now.Year; datePicker.LastYear = DateTime.Now.Year + 1; datePicker.ID = controlId; divAttribute.Controls.Add(datePicker); } break; default: break; } } //display price if allowed if (!this.HidePrices && (!this.SettingManager.GetSettingValueBoolean("Common.HidePricesForNonRegistered") || (NopContext.Current.User != null && !NopContext.Current.User.IsGuest))) { //dynamic price update if (this.SettingManager.GetSettingValueBoolean("ProductAttribute.EnableDynamicPriceUpdate")) { lblAdjustmentTableScripts.Text = adjustmentTableScripts.ToString(); lblAttributeScripts.Text = attributeScripts.ToString(); phDynPrice.Visible = true; } else { phDynPrice.Visible = false; } } else { phDynPrice.Visible = false; } } else { this.Visible = false; } } else { this.Visible = false; } }