2015-10-23 1 views
0

Я создаю пользовательский макет для списка SharePoint через JS Link ... В настоящий момент я отрисовка одна, но для некоторых более сложных (таксономия, URL-адреса и т. д.) было бы здорово, если бы вы могли выполнить пользовательский рендеринг SharePoint.Как запустить рендеринг по умолчанию в Sharepoint 2013 Список Просмотр через JS Link

Возможно ли это как-то для отдельных типов полей?

var csListView = csListView || {}; 

csListView.ListBody = '<div class="datagrid"><table><thead>{LIST_HEADER}</thead>{LIST_BODY}<tfoot><tr><td colspan="{FIELD_COUNT}"><div class="paging">{PAGINATION}</div></td></tr></tfoot></table></div>'; 
csListView.HeaderRow = '<tr>{HEADER_ITEMS}</tr>'; 
csListView.HeaderItem = '<th>{HEADER_ITEM}</th>'; 
csListView.BodyRow = '<tr class="{ALT_CLASS}">{LIST_ITEMS}</tr>'; 
csListView.BodyItem = '<td>{LIST_ITEM}</td>'; 

csListView.CustomizeFieldRendering = function() 
{ 
    var fieldJsLinkOverride = {}; 
    fieldJsLinkOverride.Templates = {}; 
    fieldJsLinkOverride.Templates.Body = csListView.RenderBody; 

    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(fieldJsLinkOverride); 
}; 

csListView.RenderBody = function (ctx) { 
    var colspan = ctx.ListSchema.Field.length; 
    var html = ''; 
    var itemHtml = ''; 
    var itemsHtml = ''; 
    var rowHtml = ''; 
    var bodyHtml = ''; 
    var paginationHtml = ''; 
    var headerItemsHtml = ''; 
    var headerHtml = ''; 

    //Render Header fields 
    for (var i = 0; i < ctx.ListSchema.Field.length; i++) { 
     var sortUrl = location.search + '?SortField=' + ctx.ListSchema.Field[i].RealFieldName + '&SortDir=Desc';//ctx.HttpRoot + ctx.listUrlDir + '/&' + ctx.ListSchema.FieldSortParam 
     var item = '<a href="' + sortUrl + '">' + ctx.ListSchema.Field[i].DisplayName + '</a>'; 
     headerItemsHtml += csListView.HeaderItem.replace('{HEADER_ITEM}', ctx.ListSchema.Field[i].DisplayName); 
    } 
    headerHtml = csListView.HeaderRow.replace('{HEADER_ITEMS}', headerItemsHtml); 

    //Go through all rows 
    for (var i = 0; i < ctx.ListData.Row.length; i++) { 
     var cssClass = (i % 2 == 0) ? 'alt' : ''; 

     //Go through all fields 
     itemsHtml = ''; 
     for (var j = 0; j < ctx.ListSchema.Field.length; j++) { 
      var item = csListView.renderField(ctx, ctx.ListSchema.Field[j], ctx.ListData.Row[i]); 

      itemHtml = csListView.BodyItem.replace('{LIST_ITEM}',item); 
      itemsHtml += itemHtml; 
     }  
     rowHtml = csListView.BodyRow.replace('{LIST_ITEMS}',itemsHtml); 
     rowHtml = rowHtml.replace('{ALT_CLASS}', cssClass); 
     bodyHtml += rowHtml; 
    } 

    html = csListView.ListBody.replace('{LIST_BODY}', bodyHtml); 
    html = html.replace('{PAGINATION}', renderPaging(ctx)); 
    html = html.replace('{FIELD_COUNT}', colspan); 
    html = html.replace('{LIST_HEADER}', headerHtml); 

    return html; 
}; 


csListView.renderField = function (ctx, fieldData, rowData) { 
    return rowData[fieldData.RealFieldName]; 
} 

ответ

0

Чтобы изменить вид поля вы можете использовать этот

var ctx = {}; 
 
ctx.Templates = {}; 
 
ctx.Templates.Fields = {'ColumnName': { 'View' : '<b><#=ctx.CurrentItem.ColumnName#></b>' }}; 
 
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx);

, что ответить на ваш вопрос?

Смежные вопросы