I have a repeater in a user control and I databind it in code behind like so:
var items = list.Items.Cast<SPListItem>()
.OrderByDescending(a => a[SPBuiltInFieldId.Modified])
.Where(a => a.HasPublishedVersion)
.Select(a => new
{
Title = a.Title,
Comments = a[FieldNames.Comments],
RollupImage = a[FieldNames.RollupImage],
PageContent = a[FieldNames.PageContent],
NewsDate = a[SPBuiltInFieldId.Modified],
Url = SPUtility.ConcatUrls(web.Url, a.Url)
}).ToList().Take(maxItems);
rptNews.DataSource = items;
rptNews.DataBind();
I now try to do the same but with REST and jQuery instead, I got it working for normal text fields but when I try to get the URL and RollupImage I get into trouble ("undefined").
$("#<%=lblReadMore.ClientID%>").click(function () {
var displayedItems = $(".news-item").length;
var url = L_Menu_BaseUrl + "/content/_vti_bin/ListData.svc/Pages?$skip=" + displayedItems + "&top=3?$orderby=Modified";
$.getJSON(url,
function (data) {
$.each(data.d.results,
function (i, result) {
$('<div class="news-item noindex"><table><tr><td class="news-item-image">' + result.PublishingRollupImage + '</td><td class="news-item-content"><h2>' + result.Title + '</h2><p>' + result.Comments + '<a class="moreButton" href="' + result.Url + '">Read More</a></p></td></tr></table></div>').appendTo("#HomePageNews");
}
);
});
});
The internal name for rollupimage is PublishingRollupImage but when I use this I get undefined.
Also, in the C# code I filter on a.HasPublishedVersion, is this taken care of automatically with the REST API or do I need a check for this?
Thanks in advance.
Edit: Updated code:
function GetImage(id) {
var ctx = new SP.ClientContext("/content/");
var targetList = ctx.get_web().get_lists().getByTitle('Pages');
targetListItem = targetList.getItemById(id);
ctx.load(targetListItem, 'PublishingRollupImage');
ctx.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded(sender, args) {
alert(targetListItem.get_item('PublishingRollupImage'));
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
function LoadAllNews() {
$('.news-item').remove();
var siteUrl = L_Menu_BaseUrl + "/content/";
var listUrl = siteUrl + "_vti_bin/ListData.svc/Pages?$filter=ApprovalStatus eq '0'";
$.getJSON(listUrl,
function (data) {
$.each(data.d.results,
function (i, result) {
GetImage(result.Id);
$('<div class="news-item noindex"><table><tr><td class="news-item-image"></td><td class="news-item-content"><h2>' + result.Title + '</h2><p>' + result.Comments + '<a class="moreButton" href="' + result.Path + "/" + result.Name + '"> Read More</a></p></td></tr></table></div>').appendTo("#HomePageNews");
}
);
});
}