Kontakt

Dosenhalter

2122115

Der Dosenhalter bietet Platz für bis zu fünf Spraydosen und lässt sich einfach am Schleifwagen Klein montieren. Pro Stück.

Praktische Aufbewahrungslösung für Ihre Spraydosen.

Mit diesem Dosenhalter schaffen Sie im Handumdrehen einen aufgeräumten Arbeitsplatz. Dieser Aufbewahrungshalter ist speziell für die effiziente Aufbewahrung von bis zu fünf Spraydosen konzipiert und kann am Schleifwagen Klein (Art. Nr. 2111010) befestigt werden. Sorgen Sie mühelos dafür, dass Ihre wichtigen Werkzeuge immer griffbereit sind. 

Maximale Effizienz mit E²M

Dieses Produkt ist Teil der revolutionären E²M-Linie von Colad, das modulare System, das deinen Arbeitsplatz smarter und effizienter macht. Mit dem flexiblen Hook-and-Grid-System erhalten Sie in Sekunden Ihre perfekte Einrichtung, ganz ohne Werkzeug. Erfahren Sie mehr auf: www.colade2m.com.

Vorteile

Hilft Ihnen, Ordnung in Ihrem Arbeitsbereich zu halten
Vielseitig, kann nach Bedarf organisiert werden
Aufbewahrung von bis zu fünf Sprühdosen
Robuste, langlebige Konstruktion

Produktdetails

Marke
Colad
Nummer
2122115
EAN
8714247071649
Höhe
6,1
Breite
49,4
Tiefe
10,2
Produktgewicht
0.6 kg
Farbe
RAL7005
Material
Stahl
Verpackung
Pro Stück
Äußere Verpackung
10 Stück pro Karton
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

Sprache
Name Dateityp Sprache Dateityp Download
Name technical-data-sheet_2122115_LANG1.pdf Dateityp TDS Sprache English Dateityp .pdf 397 KB
Name PDS_EN_2122115.pdf Dateityp TDS Sprache English Dateityp .pdf 361 KB
Name EN_EN;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache English Dateityp .pdf 1686 KB
Name PDS_NL_2122115.pdf Dateityp TDS Sprache Nederlands Dateityp .pdf 362 KB
Name NL_NL;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache Nederlands Dateityp .pdf 1686 KB
Name PDS_ES_2122115.pdf Dateityp TDS Sprache Español Dateityp .pdf 363 KB
Name ES_ES;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache Español Dateityp .pdf 1688 KB
Name PDS_DE_2122115.pdf Dateityp TDS Sprache Deutsch Dateityp .pdf 362 KB
Name DE_DE;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache Deutsch Dateityp .pdf 1687 KB
Name PDS_IT_2122115.pdf Dateityp TDS Sprache Italiano Dateityp .pdf 362 KB
Name IT_IT;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache Italiano Dateityp .pdf 1680 KB
Name PDS_FR_2122115.pdf Dateityp TDS Sprache Français Dateityp .pdf 363 KB
Name FR_FR;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache Français Dateityp .pdf 1682 KB
Name PDS_PL_2122115.pdf Dateityp TDS Sprache Polski Dateityp .pdf 364 KB
Name PL_PL;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache Polski Dateityp .pdf 1688 KB
Name PDS_PT_2122115.pdf Dateityp TDS Sprache Portuguese Dateityp .pdf 364 KB
Name PT_PT;Colad_Brochure_E2M_Assortment.pdf Dateityp Product_flyer Sprache Portuguese Dateityp .pdf 1686 KB

Ähnliche Produkte

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