/// <summary> /// Loads control. /// </summary> private void LoadControl() { // Get all product categories with options which are already in variants if (VariantCategoriesOptions.Count == 0) { DataSet variantCategoriesDS = VariantHelper.GetProductVariantsCategories(ProductID); FillCategoriesOptionsDictionary(VariantCategoriesOptions, variantCategoriesDS); } // Get all product attribute categories with options if (AllCategoriesOptions.Count == 0) { DataSet allCategoriesDS = OptionCategoryInfoProvider.GetProductOptionCategories(ProductID, true, OptionCategoryTypeEnum.Attribute); FillCategoriesOptionsDictionary(AllCategoriesOptions, allCategoriesDS); } foreach (KeyValuePair <OptionCategoryInfo, List <SKUInfo> > keyValuePair in AllCategoriesOptions) { if (keyValuePair.Value.Count > 0) { OptionCategoryInfo optionCategory = keyValuePair.Key; // Create new instance of CheckBoxWithDropDown control and prefill all necessary values CheckBoxWithDropDown checkBoxWithDropDown = new CheckBoxWithDropDown(); checkBoxWithDropDown.ID = ValidationHelper.GetString(optionCategory.CategoryID, string.Empty); checkBoxWithDropDown.Value = optionCategory.CategoryID; // Use live site display name instead of category display name in case it is available checkBoxWithDropDown.CheckboxText = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(optionCategory.CategoryTitle)); // Attach listeners checkBoxWithDropDown.OnCheckBoxSelectionChanged += checkBoxWithDropDown_OnCheckBoxSelectionChanged; checkBoxWithDropDown.OnDropDownSelectionChanged += checkBoxWithDropDown_OnDropDownSelectionChanged; // Option category is in variants too if (VariantCategoriesOptions.Keys.Any(c => ValidationHelper.GetInteger(c["categoryId"], 0) == optionCategory.CategoryID)) { // Check and disable checkbox checkBoxWithDropDown.CheckboxChecked = true; checkBoxWithDropDown.Enabled = false; // Already existing variants add to selected categories too if (!SelectedCategories.ContainsKey(optionCategory.CategoryID)) { SelectedCategories.Add(optionCategory.CategoryID, VariantOptionInfo.ExistingSelectedOption); } } // Option category is not in variant, but some categories in variants already exists else if (VariantCategoriesOptions.Count > 0) { // Set prompt message and visibility checkBoxWithDropDown.DropDownPrompt = GetString("general.pleaseselect"); checkBoxWithDropDown.DropDownLabel = GetString("com.variants.dropdownlabel"); checkBoxWithDropDown.DropDownVisible = true; // Get all product options and bind them to dropdownlist var options = SKUInfoProvider.GetSKUOptionsForProduct(ProductID, optionCategory.CategoryID, true).OrderBy("SKUOrder"); var dropDownItems = new ListItemCollection(); foreach (var option in options) { dropDownItems.Add(new ListItem(option.SKUName, option.SKUID.ToString())); } checkBoxWithDropDown.DropDownItems = dropDownItems; } // Finally bind this control to parent chboxPanel.Controls.Add(checkBoxWithDropDown); } } }