2

情况

在 Sharepoint 2010 中,我可以单击列表中的项目:

在此处输入图像描述

然后读取/编辑视图在该页面中变得可见:

在此处输入图像描述

我的目标

我在另一个页面上有一个 WebPart ,我在其中显示了来自此列表和其他几个列表的一些项目,我想为每个列表添加一个读取或编辑链接。

我怎样才能做到这一点?

我正在寻找一个EditListItem('ItemId', 'ListId', ...)可以打开编辑 div 窗口的函数。

我试过什么

Sharepoint在上面的“Test Item”上生成的a标签是这样的:

<a onfocus="OnLink(this)" 
   href="http://{mysharepointsite}/_layouts/listform.aspx
         ?PageType=4
         &amp;ListId={D0FDB54F-1DDF-4C5E-865B-ABDE55C1125}
         &amp;ID=1
         &amp;ContentTypeID=0x010800ED5176D13CCEFC4AA8D62A79985DE892"
   onclick="EditLink2(this,49);return false;" target="_self">Test Item</a>

因此,我深入研究了 Sharepoint JS 文件,发现从上下文 ( )EditLink2调用_EditLink2哪些调用是上下文 no 并且似乎是动态的。ShowPopup49

我试图伪造上下文,但有数十亿个变量,我认为我无法让它稳定工作。

4

2 回答 2

4

在需要打开对话框的页面上,只需编写简单的 JS 函数来显示模态对话框,例如:

function openMyItemDialog( itemId ) {
    var options = {
        url: "http://{mysharepointsite}/_layouts/listform.aspx?PageType=4&ListId={D0FDB54F-1DDF-4C5E-865B-ABDE55C1125}&ID=" + itemId + "&ContentTypeID=0x010800ED5176D13CCEFC4AA8D62A79985DE892&IsDlg=1",
        width: 500,
        height: 500,
        title: "Item view/edit"
    };
    SP.UI.ModalDialog.showModalDialog( options );
}

注意&IsDlg=1url 处的参数

然后修改显示项目的 href 链接。

例如:

<a href="#" onclick="openMyItemDialog(35)">Test item</a>

替换35ID您的项目

于 2012-04-11T10:52:26.177 回答
0

我知道这是一个老问题,但是还有另一种方法可以实现 OP 试图做的事情。

在 XSLT ViewWebPart 中,有一个名为 $ViewCounter 的全局参数。这是 _EditLink2 函数所需的上下文编号。

因此,为了向显示表单添加链接并在对话框中打开它,请将项目包装在<a>这样的标签中:

<a href="{$HttpVDir}/_layouts/listform.aspx?PageType=4&amp;ListId={$List}&amp;ID={$thisNode/@ID}" onclick="EditLink2(this,{$ViewCounter});return false;">your item</a>

注意变量 $HttpVDir、$List、$thisNode/@ID 和 $ViewCounter(无需硬编码任何值)。

于 2014-02-17T17:37:30.873 回答