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 4861 posts 12138 karma points MVP 3x 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.

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies