Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • René Andersen 238 posts 684 karma points
    Jun 17, 2013 @ 09:39
    René Andersen
    0

    How to use InGroupsOf

    Hi everybody

    I can't figure out where to put in "InGroupsOf" in the code below. I have tried several approaches with no luck. Is the problem that I use DynamicNode? I need the code to generate a group of 3 between the "<div class="row-fluid">" and then make another group of 3 with a new "<div class="row-fluid">".

    @inherits umbraco.MacroEngines.DynamicNodeContext
    @using DigibizAdvancedMediaPicker;

    <div class="team-members">
    <div class="row-fluid">
    @{
    var rootNode = new umbraco.MacroEngines.DynamicNode(-1);

    var dataNode = rootNode.Children.Items.SingleOrDefault(x => x.NodeTypeAlias == "Data");
    var dataNodeChildren = dataNode.Children as umbraco.MacroEngines.DynamicNodeList;

    var employeeBase = dataNodeChildren.Items.SingleOrDefault(x => x.NodeTypeAlias == "EmployeeBase");
    var employeeBaseChildren = employeeBase.Children as umbraco.MacroEngines.DynamicNodeList;

    //foreach (dynamic member in employeeBaseChildren)
    foreach (dynamic member in employeeBase.Children)
    {
    if (member.NodeTypeAlias == "Employee")
    {
    dynamic media = Model.MediaById(member.imageDamp);
    <div class="span4">
    <img src="@media.umbracoFile" alt="@media.nodeName"/>
    <article class="member-content">
    <h3>@member.employeeName</h3>
    <span>@member.employeeType</span>
    @if (member.HasValue("employeeAddress"))
    {
    <p>@member.employeeAddress</p>
    }
    @if (member.HasValue("employeePhone"))
    {
    <p>Telefon: @member.employeePhone</p>
    }
    @if (member.HasValue("employeeMail"))
    {
    <p>@member.employeeMail</p>
    }
    </article>
    </div>
    }
    }
    }
    </div>
    </div>

    I have managed to get it working in a earlier project see below:

    @foreach (var group in Model.Children.InGroupsOf(3))
    {
    <div class="row">
    @foreach (var page in group)
    {
    <div class="span3">
    <div class="service-overview">
    <h5><span class="link-white"><a href="@page.Url">@page.headerMain</a></span></h5>
    <p>@(Library.Truncate(Library.StripHtml(page.mainText), 60, true))</p>
    <img src="@page.image" alt="" />
    <div class="service-overview-overlay">+</div>
    </div><!-- end .service-overview -->
    </div><!-- end .span3 -->
    }
    </div><!-- end .row -->
    <br />
    }

    Thanks in advance!

    //René

  • René Andersen 238 posts 684 karma points
    Jun 18, 2013 @ 10:57
    René Andersen
    0

    Hello

    I am still struggeling with this problem and I get this error in Visual Studio after i have put in the code ".InGroupsOf(3))" see code below: "The type arguments for method 'umbraco.MacroEngines.DynamicNodeList.InGroupsOf<T>(int)' cannot be inferred from the usage. Try specifying the type arguments explicitly."

    @inherits umbraco.MacroEngines.DynamicNodeContext
    @using DigibizAdvancedMediaPicker;

    <div class="team-members">
    @{
    var rootNode = new umbraco.MacroEngines.DynamicNode(-1);

    var dataNode = rootNode.Children.Items.SingleOrDefault(x => x.NodeTypeAlias == "Data");
    var dataNodeChildren = dataNode.Children as umbraco.MacroEngines.DynamicNodeList;

    var employeeBase = dataNodeChildren.Items.SingleOrDefault(x => x.NodeTypeAlias == "EmployeeBase");
    var employeeBaseChildren = employeeBase.Children as umbraco.MacroEngines.DynamicNodeList;

    foreach (dynamic member in employeeBaseChildren.InGroupsOf(3))
    {
    if (member.NodeTypeAlias == "Employee")
    {
    dynamic media = Model.MediaById(member.imageDamp);
    <div class="row-fluid">
    <div class="span4">
    <img src="@media.umbracoFile" alt="@media.nodeName"/>
    <article class="member-content">
    <h3>@member.employeeName</h3>
    <span>@member.employeeType</span>
    @if (member.HasValue("employeeAddress"))
    {
    <p>@member.employeeAddress</p>
    }
    @if (member.HasValue("employeePhone"))
    {
    <p>Telefon: @member.employeePhone</p>
    }
    @if (member.HasValue("employeeMail"))
    {
    <p>@member.employeeMail</p>
    }
    </article>
    </div>
    </div>
    }
    }
    }
    </div>

    Does anyone know what the problem is?

    Thanks in advance!

    //René

  • Jeroen Breuer 4908 posts 12265 karma points MVP 5x admin c-trib
    Jun 18, 2013 @ 12:23
    Jeroen Breuer
    0

    Perhaps you need to use dynamic instead of var at some places. Try something like this:

    dynamic employeeBaseChildren = employeeBase.Children as umbraco.MacroEngines.DynamicNodeList;
    
    foreach (dynamic member in employeeBaseChildren.InGroupsOf(3))

    Jeroen

  • Jonas Eriksson 930 posts 1825 karma points
    Jun 18, 2013 @ 13:12
    Jonas Eriksson
    1

    InGroupsOf, I like that extension, never used it before, I think you are missing a foreach I tried this and it worked:

    <div class="team-members">
     @{
         dynamic employeeBase = new umbraco.MacroEngines.DynamicNode(Model.Content.Id);
    
         //var dataNode = rootNode.Children.Items.SingleOrDefault(x => x.NodeTypeAlias == "Data");
         //var dataNodeChildren = dataNode.Children as umbraco.MacroEngines.DynamicNodeList;
    
         //var employeeBase = dataNodeChildren.Items.SingleOrDefault(x => x.NodeTypeAlias == "EmployeeBase");
         dynamic employeeBaseChildren = employeeBase.Children as umbraco.MacroEngines.DynamicNodeList;
    
         foreach (dynamic childGroups in employeeBaseChildren.InGroupsOf(3))
         {
             <div class="group">
             @foreach (dynamic child in childGroups)
             {
                 <p>@child.Name</p>
             }
             </div>
         }
     }
    </div>

     

    It does not explain your "type could not get inferred error" though.

    You can explicitly add the type like so:

    foreach (dynamic childGroups in employeeBaseChildren.InGroupsOf<DynamicNode>(3))

    if you like to try, but I think it should be able to figure it out without it.

Please Sign in or register to post replies

Write your reply to:

Draft