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(); }
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 #"); 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(); }