如何在另一页上编辑列表项

时间:2012-04-09 05:03:34

标签: javascript sharepoint-2010

情况

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

enter image description here

然后在该页面中显示“读取/编辑”视图:

enter image description here

我的目标

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

我该怎么做?

我正在搜索像EditListItem('ItemId', 'ListId', ...)这样的函数,它会打开编辑div窗口。

我尝试了什么

Sharepoint在上面的“测试项目”上生成的标签是这样的:

<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从上下文调用ShowPopup49)是上下文no和似乎要充满活力。

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

2 个答案:

答案 0 :(得分:4)

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

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 );
}

请注意网址<{1}} param

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

例如:

&IsDlg=1

<a href="#" onclick="openMyItemDialog(35)">Test item</a> 替换为您商品的35

答案 1 :(得分: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(不需要对任何值进行硬编码)。