Reputation: 43
I would like to display records from an Umbraco forms on a page. So far, I managed to display:
How do I limit it to display only 5 newest records (where "Display my name" value is TRUE)?
My codes below:
<ul id="formData">
@{int i = 0;}
@foreach (dynamic record in Library.GetApprovedRecordsFromPage(@CurrentPage.Id).OrderBy("Created descending"))
{
if (@record.GetField("Display my name").Values[0].ToString() == "True")
{
<li>
Name: @record.GetField("Name").Values[0]<br />
Email: @record.GetField("Email").Values[0]<br />
Display my name: @record.GetField("Display my name").Values[0]<br />
Created: @record.Created.ToString("dd MMMM yyy")<br />
</li>
}
i++;
}
</ul>
<h4>Total data: @i</h4>
Upvotes: 0
Views: 590
Reputation: 394
I would recommend you to use this code for getting records:
@{
using (var formStorage = new FormStorage())
{
using (var recordStorage = new RecordStorage())
{
var form = formStorage.GetForm(Guid.Parse("ede58fd2-9eff-4f88-a5d6-053042983681"));
var records = recordStorage.GetAllRecords(form).Where(x => x.UmbracoPageId == Model.Content.Id && x.State == FormState.Approved).Where(x => x.GetRecordField("Display my name").Equals("True")).OrderByDescending(x => x.Created).ToList();
}
}
}
Upvotes: 0
Reputation: 3425
You might be able to put the property value check into a .Where(...)? So
.Where(x => x.GetField("Display my name").Values[0].ToString() == "True").OrderBy(whatevs).Take(5)
Upvotes: 1