我在Sharepoint中有一个列表,使用自定义新表单我添加了自定义列表表单控件(列表的“新项目表单”)并将SaveButton更改为标准输入HTML按钮,并添加了一个'onclick '事件如下:

onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={NewFormWizard2.aspx?id=}')}"

这与保存数据和重定向到NewFormWizard2.aspx?id = page一样。

如何获取要传递到重定向页面的已创建项目的ID?

因此,一旦表单完成,它将重定向到NewFormWizard2.aspx?id = 23

有帮助吗?

解决方案 5

使用纯javascript(JQuery)和来自 http://darrenjohnstone.net/ 的SPAPI代码找到了一种方法

该列表包含两个字段,title和BodyCopy

我已经创建了一个表单,要求提供标题和问题,两个文本字段,然后提交按钮调用以下函数:(请注意,ServerAddress和LIST_question需要更新为您自己的详细信息)。

然后,该函数使用LISTS.ASMX中的SOAP服务上传详细信息,并使用响应获取新项目的ID并重定向页面。

var LIST_question = '{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}';
var ServerAddress = 'http://xxx/';

function submitQuestion()
    {
    var title = new String($("#title").val());
    var t = new String($("#question").val());
    t=t.trim();
    if(t=="")
        return;

    title=title.trim();
    if(title=="")
        return;


    var lists = new SPAPI_Lists(ServerAddress) ;
    // 
    var newItem = { Title :  title, BodyCopy : t};
    var items = lists.quickAddListItem(LIST_question, newItem); 
    var id=-1; 
    if (items.status == 200) 
    { 
        var rows = items.responseXML.getElementsByTagName('z:row');
        if(rows.length ==1)
        {
            var r = rows[0];
            var id = r.getAttribute('ows_ID'); 
            window.location.href='DispForm.aspx?ID='+id;

        }
        else
        {
            alert("Error: No row added");
        }


    } 
    else
    { 

        alert('There was an error: ' + items.statusText); 
        return;
    }
}

其他提示

jtherkel很接近,但在重定向网址的末尾错过了一个'}'。我在下面使用了额外的concat

<input type="button" value="Submit" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={lists/MyListName/DispForm.aspx?ID=',/dsQueryResponse/Rows/Row/@ID,'}'))}" />

我不确定您在托管Javascript的页面上存在ID的位置。它是出现在查询字符串中还是出现在页面上的字段上?

请求或响应中没有任何内容可识别该项目。我在做一些网络负载测试时遇到过这个问题。

我只能建议你使用webservices创建项目,因为它会给你一些返回xml。

这个答案没有解决“新形式”的问题。问题,但它可能会帮助其他人使用包含现有列表项的屏幕的语法。

我在SharePoint(MOSS 2007)环境中快速测试了这个。

onclick =&quot; javascript:{ddwrt:GenFireServerEvent(concat('__ commit; __ redirect = {NewFormWizard2.aspx?id =',/ dsQueryResponse / Rows / Row / @ ID))}&quot;

concat语法是一条XSLT指令,它告诉处理器将单引号括起来的值组合在一起。我根据我在这里找到的信息调整了这个答案。

在自定义列表表单中加载值 http://wssdevelopment.blogspot.com/2007_04_01_archive.html

我希望这会有所帮助: 1-在SharePoint Designer中创建新页面,例如将其命名为“LastItem.aspx”。并在其上放置一个数据视图,其中包含目标列表项的单个表单视图。 2 - 限制只对一条记录进行分页,按ID设置排序并降序并过滤列表以显示由[当前用户]创建的项目。 3 - 现在您不需要将任何查询字符串传递给此页面。只需替换默认的“确定”即可。带有标准HTML输入按钮的列表的NewForm.aspx中的按钮,并将其添加到其定义“onclick =”javascript:{ddwrt:GenFireServerEvent(concat('__ commit; __ redirect = {LastItem.aspx}&quot;)。提交后要列出的新项目将被重定向到已创建项目的编辑视图。 您可以对LastItem.aspx中的保存按钮执行相同操作,以在单击保存按钮后重定向到其他页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top