Javascript 如何编辑其他页面上的列表项

Javascript 如何编辑其他页面上的列表项,javascript,sharepoint-2010,Javascript,Sharepoint 2010,形势 在Sharepoint 2010中,我可以单击列表中的项目: 然后,读取/编辑视图将在该页面中可见: 我的目标 我在另一个页面上有一个Web部件,其中显示了来自此列表和其他几个列表的一些项目,我想为每个列表添加一个阅读或编辑链接 我该怎么做 我正在搜索一个类似于EditListItem('ItemId','ListId',…)的函数,它将打开edit div窗口 我试过什么 Sharepoint在上面的“测试项”上生成的a标记如下所示: <a onfocus="OnLink(th

形势

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

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

我的目标

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

我该怎么做

我正在搜索一个类似于
EditListItem('ItemId','ListId',…)
的函数,它将打开edit div窗口

我试过什么

Sharepoint在上面的“测试项”上生成的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>
<a href="{$HttpVDir}/_layouts/listform.aspx?PageType=4&amp;ListId={$List}&amp;ID={$thisNode/@ID}" onclick="EditLink2(this,{$ViewCounter});return false;">your item</a>

因此,我对Sharepoint JS文件进行了深入研究,发现
EditLink2
调用
\u EditLink2
从上下文调用
ShowPopup
49
)是上下文编号,似乎是动态的


我试图伪造上下文,但有数十亿个变量,我想我无法使其稳定工作。

在需要打开对话框的页面上,只需编写简单的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 );
}
<a href="#" onclick="openMyItemDialog(35)">Test item</a>
请注意url处的
&IsDlg=1
参数

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

例如:

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 );
}
<a href="#" onclick="openMyItemDialog(35)">Test item</a>


在需要打开对话框的页面上,将项目的
35
替换为
ID
,只需编写简单的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 );
}
<a href="#" onclick="openMyItemDialog(35)">Test item</a>
请注意url处的
&IsDlg=1
参数

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

例如:

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 );
}
<a href="#" onclick="openMyItemDialog(35)">Test item</a>


将您物品的
35
替换为
ID

我知道这是一个老问题,但有另一种方法可以实现OP的目标

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

因此,为了向显示表单添加链接并在对话框中打开它,请将该项包装为


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

我知道这是一个老问题,但有另一种方法可以实现OP的目标

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

因此,为了向显示表单添加链接并在对话框中打开它,请将该项包装为

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