5

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

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

这就像保存数据并重定向到 NewFormWizard2.aspx?id= 页面一样。

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

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

4

6 回答 6

2

jtherkel 很接近,但在重定向 URL 的末尾缺少一个“}”。我在下面使用了一个额外的 concat

<input type="button" value="Submit" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={lists/MyListName/DispForm.aspx?ID=',/dsQueryResponse/Rows/Row/@ID,'}'))}" />
于 2010-03-19T19:16:25.980 回答
0

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

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

我只能建议您使用 web 服务创建项目,因为它会为您提供一些返回 xml。

于 2009-04-29T22:08:24.243 回答
0

您可以使用 JavaScript http://www.sharepointdrive.com/blog/Lists/Posts/Post.aspx?ID=9来实现这一点

于 2009-10-11T10:30:28.970 回答
0

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

于 2009-07-31T04:22:43.010 回答
0

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

我在我的 SharePoint (MOSS 2007) 环境中对此进行了快速测试。

onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={NewFormWizard2.aspx?id=',/dsQueryResponse/Rows/Row/@ID))}"

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

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

于 2009-06-04T16:33:03.903 回答
0

找到了一种使用纯 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;
    }
}
于 2009-08-25T10:34:40.777 回答