Пример #1
0
    /// <summary>
    /// Generates variants, builds UniGrid and binds data to it.
    /// </summary>
    private void SetupVariants(bool regenerate = true)
    {
        // Do not setup variants, when callback is requesting page
        if (RequestHelper.IsCallback())
        {
            return;
        }

        // Limit maximum variants count
        const int maxVariantsCount = 1000;

        if (VariantHelper.GetAllPossibleVariantsCount(ProductID, CategorySelector.SelectedCategories.Keys) > maxVariantsCount)
        {
            ShowWarning(GetString("com.variants.variantlimit"));
            return;
        }

        if (regenerate)
        {
            // Generate Variants
            mGeneratedVariants = GenerateVariants();
            ExistingItems      = null;
        }

        // Set UniGrid columns and other properties
        VariantGrid.GridColumns.Columns         = mColumnDefinitions;
        VariantGrid.GridOptions.DisplayFilter   = false;
        VariantGrid.GridOptions.ShowSelection   = true;
        VariantGrid.GridOptions.SelectionColumn = "RowNumber";

        var existingItems = ExistingItems;

        VariantGrid.SelectedItems = ((existingItems != null) && (existingItems.Count > 0)) ? existingItems : VariantGrid.SelectedItems;

        // Bind data to UniGrid
        VariantGrid.DataSource = mGeneratedVariants;
        VariantGrid.ReloadData();
    }
Пример #2
0
        private void BindVariantGrid()
        {
            //VALIDATE CURRENT PAGE IS IN RANGE
            if (_CurrentPage > _TotalPages | _CurrentPage < 1)
            {
                //RESET TO THE FIRST PAGE
                _CurrentPage = 1;
            }

            //CHECK IF LAST PAGE
            if (_CurrentPage == _TotalPages)
            {
                //HIDE NEXT AND LAST LINK FOR LAST PAGE
                NextLink.Visible = false;
                LastLink.Visible = false;
            }
            else
            {
                //SHOW NEXT AND LAST LINK FOR THIS PAGE
                NextLink.Visible         = true;
                LastLink.Visible         = true;
                NextLink.CommandArgument = ((int)(_CurrentPage + 1)).ToString();
                LastLink.CommandArgument = _TotalPages.ToString();
            }

            if (_CurrentPage == 1)
            {
                //HIDE PREVIOUS AND FIRST LINK FOR FIRST PAGE
                PreviousLink.Visible = false;
                FirstLink.Visible    = false;
            }
            else
            {
                //SHOW PREVIOUS AND NEXT LINK FOR THIS PAGE
                PreviousLink.Visible         = true;
                FirstLink.Visible            = true;
                PreviousLink.CommandArgument = ((int)(_CurrentPage - 1)).ToString();
                FirstLink.CommandArgument    = "1";
            }

            //BUILD PAGE LIST
            JumpPage.Items.Clear();
            if (_TotalPages <= 100)
            {
                //ADD ALL PAGES TO LIST
                for (int x = 1; x <= _TotalPages; x++)
                {
                    JumpPage.Items.Add(x.ToString());
                }
                JumpPage.SelectedIndex = (_CurrentPage - 1);
            }
            else
            {
                //DISPLAY ONLY ONE HUNDRED PAGES
                int startPage, endPage;
                if (_CurrentPage < 51)
                {
                    //SHOW FIRST HUNDRED PAGES
                    startPage = 1;
                    endPage   = 100;
                }
                else if (_CurrentPage > _TotalPages - 100)
                {
                    //SHOW LAST HUNDRED PAGES
                    startPage = _TotalPages - 100;
                    endPage   = _TotalPages;
                }
                else
                {
                    //SHOW RANGE OF HUNDRED
                    startPage = _CurrentPage - 50;
                    endPage   = _CurrentPage + 50;
                }
                for (int i = startPage; i <= endPage; i++)
                {
                    JumpPage.Items.Add(i.ToString());
                }
                JumpPage.SelectedIndex = (_CurrentPage - startPage);
            }

            // Set the record count and page count text
            PageCountLabel.Text = _TotalPages.ToString();

            // Determine the starting and ending index in the IDList ArrayList given the current page
            int startIndex = _PageSize * (_CurrentPage - 1);
            int endIndex   = Math.Min((_PageSize * (_CurrentPage - 1)) + (_PageSize - 1), ((_WholePages * _PageSize) + _LeftOverItems - 1));

            DisplayRangeLabel.Text = string.Format(_DisplayRangeLabelText, (startIndex + 1), (endIndex + 1), _VariantCount);

            //BIND THE REPEATER HERE
            _DisplayedVariants     = _VariantManager.LoadVariantGrid(_PageSize, startIndex);
            VariantGrid.DataSource = _DisplayedVariants;
            VariantGrid.DataBind();
        }
Пример #3
0
        private void CreateDynamicGrid()
        {
            if (_AvailableVariants == null)
            {
                return;
            }
            _DataTable = new DataTable();

            DataColumn dcol;

            dcol = new DataColumn("OptionList", typeof(System.String));
            _DataTable.Columns.Add(dcol);

            if (ShowThumbnail)
            {
                dcol = new DataColumn("Thumbnail", typeof(System.String));
                _DataTable.Columns.Add(dcol);
            }

            if (ShowSku)
            {
                dcol = new DataColumn("Sku", typeof(System.String));
                _DataTable.Columns.Add(dcol);
            }

            if (ShowPartNumber)
            {
                dcol = new DataColumn("PartNumber", typeof(System.String));
                _DataTable.Columns.Add(dcol);
            }

            if (ShowGTIN)
            {
                dcol = new DataColumn("GTIN", typeof(System.String));
                _DataTable.Columns.Add(dcol);
            }

            if (_ProdOptions == null)
            {
                _ProdOptions = _Product.ProductOptions;
            }
            foreach (ProductOption option in _ProdOptions)
            {
                dcol = new DataColumn(option.Option.Name, typeof(System.String));
                _DataTable.Columns.Add(dcol);
            }

            if (ShowPrice)
            {
                dcol = new DataColumn("Price", typeof(System.String));
                _DataTable.Columns.Add(dcol);
            }
            if (ShowMSRP)
            {
                dcol = new DataColumn("Retail", typeof(System.String));
                _DataTable.Columns.Add(dcol);
            }

            DataRow drow;

            foreach (ProductVariant variant in _AvailableVariants)
            {
                drow = _DataTable.NewRow();
                drow["OptionList"] = variant.OptionList;
                if (ShowThumbnail)
                {
                    drow["Thumbnail"] = string.IsNullOrEmpty(variant.ThumbnailUrl) ? string.Empty : variant.ThumbnailUrl;
                }
                if (ShowSku)
                {
                    drow["Sku"] = string.IsNullOrEmpty(variant.Sku) ? variant.Sku : string.Format("<span itemprop='sku'>{0}</span>", variant.Sku);
                }

                if (ShowPartNumber)
                {
                    drow["PartNumber"] = string.IsNullOrEmpty(variant.ModelNumber) ? variant.ModelNumber : string.Format("<span itemprop='mpn'>{0}</span>", variant.ModelNumber);
                }
                if (ShowGTIN)
                {
                    if (string.IsNullOrEmpty(variant.GTIN))
                    {
                        drow["GTIN"] = variant.GTIN;
                    }
                    else
                    {
                        string gtinType = string.Empty;
                        switch (variant.GTIN.Length)
                        {
                        case 8:
                            gtinType = "gtin8";
                            break;

                        case 13:
                            gtinType = "gtin13";
                            break;

                        case 14:
                            gtinType = "gtin14";
                            break;

                        default:
                            gtinType = "gtin13";
                            break;
                        }
                        drow["GTIN"] = string.Format("<span itemprop='{0}'>{1}</span>", gtinType, variant.GTIN);
                    }
                }

                if (ShowPrice)
                {
                    decimal price = variant.Price.HasValue ? variant.Price.Value : 0;
                    drow["Price"] = price.LSCurrencyFormat("ulc");
                }
                if (ShowMSRP)
                {
                    decimal msrp = variant.MSRP.HasValue ? variant.MSRP.Value : 0;
                    drow["Retail"] = msrp.LSCurrencyFormat("ulc");
                }
                foreach (ProductOption option in _ProdOptions)
                {
                    drow[option.Option.Name] = variant.GetSelectedOptionChoiceName(option.Option.Choices);
                }
                _DataTable.Rows.Add(drow);
            }

            TemplateField tf;

            if (ShowThumbnail)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new ThumbnailTemplate(DataControlRowType.Header, "Thumbnail");
                tf.ItemTemplate   = new ThumbnailTemplate(DataControlRowType.DataRow, "Thumbnail");
                VariantGrid.Columns.Add(tf);
            }

            if (ShowSku)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new LabelTemplate(DataControlRowType.Header, "Model");
                tf.ItemTemplate   = new LabelTemplate(DataControlRowType.DataRow, "Sku");
                VariantGrid.Columns.Add(tf);
            }

            if (ShowPartNumber)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new LabelTemplate(DataControlRowType.Header, "Part&nbsp;#");
                tf.ItemTemplate   = new LabelTemplate(DataControlRowType.DataRow, "PartNumber");
                VariantGrid.Columns.Add(tf);
            }

            if (ShowGTIN)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new LabelTemplate(DataControlRowType.Header, GTINName);
                tf.ItemTemplate   = new LabelTemplate(DataControlRowType.DataRow, "GTIN");
                VariantGrid.Columns.Add(tf);
            }

            if (_ProdOptions == null)
            {
                _ProdOptions = _Product.ProductOptions;
            }
            foreach (ProductOption option in _ProdOptions)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new LabelTemplate(DataControlRowType.Header, option.Option.Name);
                tf.ItemTemplate   = new LabelTemplate(DataControlRowType.DataRow, option.Option.Name);
                VariantGrid.Columns.Add(tf);
            }

            tf = new TemplateField();
            tf.HeaderTemplate = new QtyBoxTemplate(DataControlRowType.Header, "Qty");
            tf.ItemTemplate   = new QtyBoxTemplate(DataControlRowType.DataRow, "Quantity");
            VariantGrid.Columns.Add(tf);

            if (ShowPrice)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new PriceLabelTemplate(DataControlRowType.Header, "Price", _ProductId);
                tf.ItemTemplate   = new PriceLabelTemplate(DataControlRowType.DataRow, "Price", _ProductId);
                VariantGrid.Columns.Add(tf);
            }

            if (ShowMSRP)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new PriceLabelTemplate(DataControlRowType.Header, "Retail", _ProductId, true);
                tf.ItemTemplate   = new PriceLabelTemplate(DataControlRowType.DataRow, "MSRP", _ProductId, true);
                VariantGrid.Columns.Add(tf);
            }

            bool inventoryEnabled = _Product.InventoryMode == InventoryMode.Variant && !_Product.AllowBackorder;

            if (inventoryEnabled && ShowInventoryMessage)
            {
                tf = new TemplateField();
                tf.HeaderTemplate = new MessageLabelTemplate(DataControlRowType.Header, "Inventory Status", _ProductId, true);
                tf.ItemTemplate   = new MessageLabelTemplate(DataControlRowType.DataRow, "", _ProductId, true);
                VariantGrid.Columns.Add(tf);
            }

            tf = new TemplateField();
            tf.HeaderTemplate = new ButtonsBoxTemplate(DataControlRowType.Header, "");
            tf.ItemTemplate   = new ButtonsBoxTemplate(DataControlRowType.DataRow, "");
            VariantGrid.Columns.Add(tf);

            //Initialize the DataSource
            VariantGrid.DataSource = _DataTable;
            //Bind the datatable with the GridView.
            VariantGrid.DataBind();
        }