Contact

Wooden Work Top - Sanding Trolley Large

2121025

Wooden Work Top for a sturdy and professional workspace. Made from high-quality rubberwood, this worktop offers a strong, smooth, and resilient surface for all your sanding and preparation tasks. Designed for perfect compatibility with the Colad Sanding Trolley Large (Art.no. 2111020). Dimensions: 990 x 490 x 20 mm. Per piece.

Transform your Sanding Trolley Large into a functional, ergonomic, and sustainable workstation with this premium wooden worktop.

Looking for a sturdy, professional, and eco-friendly upgrade for your Sanding Trolley Large (Art.no. 2111020)? This Wooden Work Top offers the perfect solution! Crafted from high-quality rubberwood, this worktop provides a smooth, durable, and stable surface for all your sanding and preparation tasks, while also being an environmentally responsible choice. Designed for professionals who value efficiency, durability, and responsible material choices!

Why rubberwood?

It's a sustainable hardwood, sourced from plantation-grown rubber trees at the end of their latex-producing cycle. Instead of being discarded, the wood is repurposed, reducing waste and promoting responsible forestry. The natural rubberwood finish adds a premium touch while ensuring durability against daily workshop use.

Upgrade now and work smarter, with sustainability in mind!


Unlock Ultimate Efficiency with E²M

 

This product is part of Colad’s revolutionary E²M line, the modular system designed to optimize any workspace with ease. With its flexible hook-and-grid system, you can create your perfect setup in seconds, no tools needed. Discover more at: www.colade2m.com.

Key features

Quick and easy installation for an instant upgrade
Smooth and spacious work surface for maximum efficiency
Custom-fit for seamless integration with your Colad Sanding Trolley Large (Art.no. 2111020)
Sustainable rubberwood, a durable and eco-friendly choice
Sturdy and durable design

Product details

Brand
Colad
Number
2121025
Error executing template "Designs/Swift/Paragraph/Finixa_ProductFieldDisplayGroupsAccordion.cshtml"
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at CompiledRazorTemplates.Dynamic.RazorEngine_7e0f733c31084a129a37c0258ce9e1ba.ExecuteAsync()
   at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 @using System.Linq 4 5 @functions { 6 7 class ContentSetting 8 { 9 public FieldGroupViewModel FieldDisplayGroup { get; set; } 10 public string LayoutPath { get; set; } 11 12 public ContentSetting(FieldGroupViewModel fieldDisplayGroup, string layoutPath) 13 { 14 FieldDisplayGroup = fieldDisplayGroup; 15 LayoutPath = GetLayoutPathFormatted(layoutPath); 16 } 17 } 18 19 ProductViewModel GetProduct() 20 { 21 ProductViewModel product = null; 22 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 28 return product; 29 } 30 31 List<ContentSetting> GetContentSettings(ProductViewModel product) 32 { 33 var displayGroups = GetDisplayGroups(product); 34 string defaultLayout = Model.Item.GetRawValueString("Layout", "list"); 35 var contentSettings = displayGroups.Select(displayGroup => new ContentSetting(displayGroup, defaultLayout)).ToList(); 36 bool layoutsCustomized = Model.Item.GetBoolean("CustomizeLayouts"); 37 38 return layoutsCustomized ? GetContentSettingsCustomizedLayoutSelection(contentSettings) : contentSettings; 39 } 40 41 List<FieldGroupViewModel> GetDisplayGroups(ProductViewModel product) 42 { 43 bool hideFieldsWithZeroValue = Model.Item.GetBoolean("HideFieldsWithZeroValue"); 44 var selectedDisplayGroupSystemName = Model.Item.GetList("FieldDisplayGroups")?.GetRawValue().OfType<string>(); 45 var displayGroups = product.GetProductDisplayGroupFieldsByGroupSystemNames(selectedDisplayGroupSystemName, hideFieldsWithZeroValue); 46 47 return displayGroups.ToList(); 48 } 49 50 List<ContentSetting> GetContentSettingsCustomizedLayoutSelection(List<ContentSetting> contentSettings) 51 { 52 var selections = Model.Item.GetItems("FieldDisplayGroupLayoutSelector"); 53 54 foreach (var contentSetting in contentSettings) 55 { 56 foreach (var selection in selections) 57 { 58 string displayGroupSystemName = string.Empty; 59 string layoutPath = string.Empty; 60 61 foreach (var field in selection.Fields) 62 { 63 displayGroupSystemName = field.SystemName == "FieldDisplayGroups" ? field.GetRawValueString() : displayGroupSystemName; 64 layoutPath = field.SystemName == "Layout" ? field.GetRawValueString() : layoutPath; 65 } 66 67 if (displayGroupSystemName == contentSetting.FieldDisplayGroup.SystemName) 68 { 69 contentSetting.LayoutPath = GetLayoutPathFormatted(layoutPath); 70 } 71 } 72 } 73 74 return contentSettings; 75 } 76 77 public static string GetLayoutPathFormatted(string layout) 78 { 79 string layoutPathInCapitalCase = layout[0].ToString().ToUpper() + layout.Substring(1); 80 return $"Components/Specifications/{layoutPathInCapitalCase}.cshtml"; 81 } 82 83 } 84 85 @{ 86 var product = GetProduct(); 87 88 if (product is object) 89 { 90 var accordionContentSettings = GetContentSettings(product); 91 92 string title = Model.Item.GetString("Title"); 93 bool hideLabels = Model.Item.GetBoolean("HideFieldLabels"); 94 bool hideTitle = Model.Item.GetBoolean("HideTitle"); 95 string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "display-4"); 96 var templateParams = new Dictionary<string, object> 97 { 98 {"Size", "compact" }, 99 { "HideGroupHeaders", true }, 100 { "HideTitle", true } 101 }; 102 103 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 104 string gapCss = "gap-2"; 105 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 106 contentPadding = contentPadding == "none" ? string.Empty : contentPadding; 107 contentPadding = contentPadding == "small" ? " p-2 p-md-3" : contentPadding; 108 contentPadding = contentPadding == "large" ? " p-4 p-md-5" : contentPadding; 109 110 <div class="h-100@(theme)@(contentPadding) item_@Model.Item.SystemName.ToLower()"> 111 <div class="grid @(gapCss)"> 112 @if (!hideTitle && accordionContentSettings.Any()) 113 { 114 <h2 class="g-col-12 @titleFontSize">Frequent Asked Questions</h2> 115 } 116 <div class="g-col-12"> 117 <div class="accordion accordion-flush w-100" id="Specifications_@Model.ID"> 118 @foreach (var contentSetting in accordionContentSettings) 119 { 120 foreach (var field in contentSetting.FieldDisplayGroup.Fields.Select((value, index) => new { value, index })) 121 { 122 if (field.index % 2 == 0) 123 { 124 var id = Guid.NewGuid().ToString(); 125 string groupHeadingId = $"SpecificationHeading_{Model.ID}_{id}"; 126 string groupItemId = $"SpecificationItem_{Model.ID}_{id}"; 127 128 <div class="accordion-item"> 129 <h2 class="accordion-header" id="@groupHeadingId"> 130 <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#@groupItemId" aria-expanded="false" aria-controls="@groupItemId"> 131 @field.value.Value 132 </button> 133 </h2> 134 135 <div id="@groupItemId" class="accordion-collapse collapse" aria-labelledby="@groupHeadingId" data-bs-parent="#Specifications_@Model.ID"> 136 <div class="accordion-body"> 137 <span>@contentSetting.FieldDisplayGroup.Fields[field.index + 1].Value</span> 138 </div> 139 </div> 140 </div> 141 } 142 } 143 } 144 </div> 145 </div> 146 </div> 147 </div> 148 } 149 else 150 { 151 <div class="alert alert-warning m-0">@Translate("Product Specification will be shown here if any")</div> 152 } 153 } 154

Downloads

Language
Name Asset Type Language File type Download
Name PDS_EN_2121025.pdf Asset Type TDS Language English File type .pdf 520 KB
Name EN_EN;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language English File type .pdf 1686 KB
Name EN_EN;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language English File type .pdf 1686 KB
Name PDS_NL_2121025.pdf Asset Type TDS Language Nederlands File type .pdf 520 KB
Name NL_NL;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language Nederlands File type .pdf 1686 KB
Name PDS_ES_2121025.pdf Asset Type TDS Language Español File type .pdf 521 KB
Name ES_ES;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language Español File type .pdf 1688 KB
Name PDS_DE_2121025.pdf Asset Type TDS Language Deutsch File type .pdf 521 KB
Name DE_DE;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language Deutsch File type .pdf 1687 KB
Name PDS_IT_2121025.pdf Asset Type TDS Language Italiano File type .pdf 521 KB
Name IT_IT;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language Italiano File type .pdf 1680 KB
Name PDS_FR_2121025.pdf Asset Type TDS Language Français File type .pdf 522 KB
Name FR_FR;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language Français File type .pdf 1682 KB
Name PDS_PL_2121025.pdf Asset Type TDS Language Polski File type .pdf 522 KB
Name PL_PL;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language Polski File type .pdf 1688 KB
Name PDS_PT_2121025.pdf Asset Type TDS Language Portuguese File type .pdf 522 KB
Name PT_PT;Colad_Brochure_E2M_Assortment.pdf Asset Type Product_flyer Language Portuguese File type .pdf 1686 KB

Related Products

By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing