我在Sharepoint中有一个列表,使用自定义新表单添加了自定义列表表单控件(列表的“新项目表单”)并将SaveButton更改为标准输入HTML按钮,并添加了“onclick”事件如下:
onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={NewFormWizard2.aspx?id=}')}"
这与保存数据和重定向到NewFormWizard2.aspx?id = page一样。
如何获取要传递到重定向页面的已创建项目的ID?
因此,一旦表单完成,它将重定向到NewFormWizard2.aspx?id = 23
答案 0 :(得分:2)
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,'}'))}" />
答案 1 :(得分:0)
我不确定您在托管Javascript的页面上存在ID的位置。它是出现在查询字符串中还是出现在页面上的字段上?
请求或响应中没有任何内容可识别该项目。我在做一些网络负载测试时遇到过这个问题。
我只能建议你使用webservices创建项目,因为它会给你一些返回xml。
答案 2 :(得分: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
答案 3 :(得分:0)
我希望这会有所帮助: 1-在SharePoint Designer中创建新页面,将其称为“LastItem.aspx”,并在其上放置一个数据视图,其中包含目标列表项的单个表单视图。 2 - 限制只对一条记录进行分页,按ID设置排序并降序并过滤列表以显示由[当前用户]创建的项目。 3 - 现在您不需要将任何查询字符串传递给此页面。只需使用标准HTML输入按钮替换列表的NewForm.aspx中的默认“确定”按钮,并将其添加到其定义“onclick =”javascript:{ddwrt:GenFireServerEvent(concat('__ commit; __ redirect = {LastItem.aspx}} “。提交新项目到列表后,您将被重定向到创建项目的编辑视图。 您可以对LastItem.aspx中的保存按钮执行相同操作,以在单击保存按钮后重定向到其他页面。
答案 4 :(得分: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;
}
}
答案 5 :(得分:0)
您可以使用JavaScript http://www.sharepointdrive.com/blog/Lists/Posts/Post.aspx?ID=9
实现此目的