4

我有一个关于 ECB 的问题:在 Sharepoint 2013 中,如何使用 JSLink 在视图中创建编辑控制块 (ECB)。

  • 我使用 JSLink 修改默认视图,但我无法显示带有“查看项目”、“新项目”的 ECB 上下文菜单......我不想使用 XSLT 或自定义操作。根据我的雇主,我必须使用 JSLink 来做到这一点。
  • 我在 FeatureReceiver.cs 中更新 JSLink for View,而不是使用其他 webpart。我的观点还可以,但缺少欧洲央行。

这是我的自定义视图的图片: 在此处输入图像描述

SP2013 中的标准视图: 在此处输入图像描述

这是我的 JavaScript 代码:

(function () {
    var itemCtx = {};
    itemCtx.Templates = {};
    itemCtx.Templates.Item = ItemOverrideFun;
    itemCtx.BaseViewID = 1;
    itemCtx.ListTemplateType = 104;
    itemCtx.OnPostRender = [];
    itemCtx.OnPostRender.push(function () {
        $(document).ready(function () {

        // use this method to extend ECB on common lists...
       function Custom_AddListMenuItems(m, ctx) {
       // Adding a simple command to the ECB
       CAMOpt(m, 'Go to', 'javascript:STSNavigate("http://www.abc.com");return false;');
       // Adding a separator to the ECB
       CAMSep(m);
       }
       // use this method to extend ECB on libraries...
       function Custom_AddDocLibMenuItems(m, ctx) {}

        });
    });
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(itemCtx);
})();

function ItemOverrideFun(ctx) {
    var id = ctx.CurrentItem["ID"];
    var _announcementTitle = ctx.CurrentItem["Title"];
    var _announcementDesc = ctx.CurrentItem["Content"];
    var createBy = ctx.CurrentItem["Author"][0].title;
    var modified = ctx.CurrentItem["Modified"];
    var att = ctx.CurrentItem["Attachments"];
    var attImg = "";
    if (att == true) {
        attImg = attImg + "<img src='/../../_layouts/15/images/attach.gif' />&nbsp;";
    }
    return "<tr><td></td><td vAlign='top' style='width:20px;padding-left:8px;'>" + attImg + "</td><td colspan='2' style='padding-left:40px;'><img style='cursor:pointer' onclick='Expand(" + id + ");' id='imgId" + id + "' src='" + L_Menu_BaseUrl + "/Images/minus.gif' /><span style='padding-left:5px'><a style='cursor:pointer;font-size:1em' href='" + L_Menu_BaseUrl + "/Lists/Bulletin%20Board/DispForm.aspx?ID=" + id + "'>" + _announcementTitle + "</a></span><div id='sh" + id + "' style='padding-left:15px;'>" + _announcementDesc + "</div></td><td>" + createBy + "</td><td>" + modified + "</td></tr>";
}

function Expand(id) {
    var dsStatus = document.getElementById('sh' + id).style.display;
    var url = L_Menu_BaseUrl;
    if (dsStatus == 'none') {
        jQuery("#imgId" + id).attr('src', url + '/Images/minus.gif');
        $('#sh' + id).show();
    }
    else {
        jQuery("#imgId" + id).attr('src', url + '/images/plus.gif');
        $('#sh' + id).hide();
    }
}

ECB的struct HTML是什么?我返回缺少的欧洲央行,那么我该如何解决这个问题?

4

1 回答 1

2

好的,我已经解决了这个问题。

ECB 不显示,因为 ItemOverrideFun 中的结构 HTML 返回不正确。

这是最终的 Javascript 代码:

https://sharepoint.stackexchange.com/questions/97189/create-edit-control-block-ecb-on-view-with-jslink/97229#97229

于 2014-04-25T09:50:10.460 回答