Copied to clipboard

Flag this post as spam?

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


  • Phillip Turner 98 posts 411 karma points
    Apr 18, 2014 @ 20:03
    Phillip Turner
    0

    Need help with Where and Contains 6.1.6 Razor

    Good afternoon Umbracians.

    I am trying to get a list of items from my tree where a dropdown field = a certain value.

    I have tried so many different ways and failed. Any advice will be grateful.

    Here is my code:

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage
    @using System.Xml.XPath
    @using umbraco.MacroEngines
    @{
        int i = 0;
        XPathNodeIterator iterator = umbraco.library.GetPreValues(2309);
        iterator.MoveNext();
        XPathNodeIterator preValues = iterator.Current.SelectChildren("preValue", "");
        var centers = CurrentPage.AncestorOrSelf(2).Children;
        List<string> groups = new List<string>();
    
        while (preValues.MoveNext())
        {
            groups.Add(preValues.Current.Value);
        }
    }
    <div id="tab-box-partner" style="background-color: White;">
        @foreach (string group in groups)
        {
            <div class="service-center-block @(i > 0 ? " hidden" : "")">
            <h2>@group</h2>
            <p>
            @foreach (var center in centers.Where(string.Format("serviceCenterType == {0}", group)))
            {
            @(center.serviceCenterName == "" ? center.Name : center.serviceCenterName)
            @center.addressBlock
            }  
            </p>      
        </div>
        i++;
    }
    </div>
    
  • Jeavon Leopold 3008 posts 13221 karma points MVP 7x admin c-trib
    Apr 18, 2014 @ 20:54
    Jeavon Leopold
    0

    Hi Philip,

    It looks like this is a MVC Partial View, could you confirm?

    Jeavon

    Edit: I see you are using Umbraco v6.1.6

  • Jeavon Leopold 3008 posts 13221 karma points MVP 7x admin c-trib
    Apr 18, 2014 @ 21:05
    Jeavon Leopold
    0

    Also is your dropdown with property alias "serviceCenterType" a "Dropdown list" or a "Dropdown list, publishing keys"?

  • Phillip Turner 98 posts 411 karma points
    Apr 18, 2014 @ 21:12
    Phillip Turner
    0

    Yes, this is a MVC partial and the DataType is DropDownList.

  • Jeavon Leopold 3008 posts 13221 karma points MVP 7x admin c-trib
    Apr 18, 2014 @ 21:16
    Jeavon Leopold
    0

    Ok cool, and you want to find all nodes that are the children of the first level 2 node up the tree from the current node that have a certain value selected from that dropdown, e.g. "mything" and loop through them, right?

  • Phillip Turner 98 posts 411 karma points
    Apr 18, 2014 @ 22:03
    Phillip Turner
    0

    Home > Centers > Service Center Address

    Above is the how the tree is.

    I want to get all the nodes under Centers that have a serviceCenterType of XYZ.

  • Jeavon Leopold 3008 posts 13221 karma points MVP 7x admin c-trib
    Apr 18, 2014 @ 22:12
    Jeavon Leopold
    0

    Ok, unless I'm missing something, I think this should do it?

    @inherits UmbracoTemplatePage
    @{
        var centers = CurrentPage.AncestorOrSelf(2).Children;
        var valueToFind = "XYZ";
    
        var xzy = centers.Where("serviceCenterType == @0", valueToFind);
    
        foreach (var node in xzy)
        {
            <p>@node.Name</p>
        }    
    }
    
  • Jeavon Leopold 3008 posts 13221 karma points MVP 7x admin c-trib
    Apr 18, 2014 @ 22:14
    Jeavon Leopold
    100

    To ignore case, you can change it to:

    var xzy = centers.Where("serviceCenterType.ToLower() == @0", valueToFind.ToLower());
    
  • Phillip Turner 98 posts 411 karma points
    Apr 18, 2014 @ 23:12
    Phillip Turner
    0

    Jeavon to the rescue.

    Worked great.

    @foreach (string group in groups)
    {
        <div class="service-center-block @(i > 0 ? " hidden" : "")">
            <h2>@group</h2>
            @foreach (var center in centers.Where("serviceCenterType == @0", group))
            {
                <p>
                <CenterName>@(center.serviceCenterName == "" ? center.Name : center.serviceCenterName)</CenterName><br />
                <CenterPhone>@center.addressBlock</CenterPhone>
                </p>
            }       
        </div>
        i++;
    }
    
  • Jeavon Leopold 3008 posts 13221 karma points MVP 7x admin c-trib
    Apr 18, 2014 @ 23:18
    Jeavon Leopold
    0

    Great! One additional bit of advice, when using MVC, you should never have @using umbraco.MacroEngines that is from the legacy "Razor Macros" and has no use within MVC templating.

  • 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