首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过CEWP将XML解析为新的/编辑表单上的SharePoint列表的列(字段)

如何通过CEWP将XML解析为新的/编辑表单上的SharePoint列表的列(字段)
EN

Stack Overflow用户
提问于 2019-07-12 13:09:02
回答 1查看 451关注 0票数 0

问题描述:

我想解析XML以在单击load按钮后自动填充新/编辑表单上的一些列(单行文本)。

背景:

XML来自外部资源,而不是来自我的或任何其他SP站点/列表/项。当前,用户必须检查外部资源的网页,并在创建新项或更新现有项时将所需信息复制/粘贴到新/编辑表单中。外部网站提供了一个API,它允许我以XML格式获取信息,因此我试图使这个任务更容易为我的网站的用户。其思想是,他们只需输入一个6位数的数字,用于标识外部资源,然后所需的信息可以放入新的/编辑表单中,因此他们只需按save键就可以提交/更新列表中的项。

到目前为止我所做的:

我只是一个SharePoint用户,不是一个开发人员,也不熟悉JS。幸运的是,我可以找到一些文章作为指导和共享代码,以实现一些特性,例如,通过jQuery.SPservice实现级联下拉列表。

我做了一些研究,使解析首先作为下面的代码工作,现在运行得很好。但是它只将XML解析为我自己的CEWP,它被添加到新/编辑表单中,而不是在新/编辑表单上显示的列表列中。理想情况下,如果我知道列的html标记id,我应该能够使它工作。

但是,在回顾了"SPCascadeDropdowns“如何识别目标列之后,它似乎不是通过标记id实现的,而是通过名为"StaticName”的东西实现的,所以我来这里寻求帮助。

当前状态:

这是供您参考的图像和代码。

image01

以下代码正在CEWP中运行,CEWP是在新的/编辑表单的顶部添加的。

代码语言:javascript
复制
<script type="text/javascript" language="javascript" src="../../CEWP%20Libraries/jquery-1.12.4.min.js"></script>
<b>PR number:</b> PR-<input type="text" id="PRNumber" value="6 digits" maxlength="6" size="3"></input>
<input type="button" value="Load PR" onclick="loadPR($('#PRNumber').val());"></input>
<b>PR Title:</b> <p id="prTitle"></p></br>
代码语言:javascript
复制
<script type="text/javascript">
function loadXMLDoc(dname) 
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load(dname);
  return(xmlDoc);
  }
catch(e) {alert(e.message)}
return(null);
}
function loadPR(PRNumber)
{
    xmlDocPrInfo=loadXMLDoc("http://fakeurl"+PRNumber);

    document.getElementById("prTitle").innerHTML = xmlDocPrInfo.getElementsByTagName("Title")[0].childNodes[0].nodeValue;

}
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-23 03:44:51

嗯,这些天我做了更多的研究,解决方案比我用jQuery时想象的要容易得多。(如果我熟悉jQuery,似乎很容易,但我不是:P,所以我花了一段时间才完成它。)

但是,要让它起作用还是有一些棘手的问题,MSFT in 这一讨论的第一个答案对我有很大的帮助。

如果我没有看到他的答案,我就无法做到这一点,因为我会被代码中的“请求归档”卡住,并且不知道为什么所有的示例都是相同的,但它们都不能工作。我正在测试其他讨论中的所有样本,但没有人提到这一点。

使用jQuery设置列(字段)的模板是

代码语言:javascript
复制
$("input[title='the display name in the form']").val("the text value you want to set");

如果它是必需的列(字段),则需要

代码语言:javascript
复制
$("input[title='the display name in the form Require Field']").val("the text value you want to set");

请注意,这只是显示名称,而不是FieldInternalName,如果代码中的title=后面跟着FieldInternalName,它将无法工作,至少在我的情况下是这样的。因此,如果要使用此代码来使其工作,您将需要表单中的唯一显示名称。

而且,在我的例子中,我需要来自XML的值,所以这是我的例子中的代码,它以来自XML的形式设置列(字段)的值。

代码语言:javascript
复制
function loadPR(PRNumber)
{
    xmlDocPrInfo=loadXMLDoc("fakeurl"+PRNumber);
    xmlDocSwPrInfo=loadXMLDoc("fakeurl"+PRNumber);


    $("input[title='Title Required Field']").val(xmlDocPrInfo.getElementsByTagName("Title")[0].childNodes[0].nodeValue);
    $("input[title='PR Status Required Field']").val(xmlDocPrInfo.getElementsByTagName("State")[0].childNodes[0].nodeValue);
    $("input[title='Version Reported Required Field']").val(xmlDocSwPrInfo.getElementsByTagName("VersionReported")[0].childNodes[0].nodeValue);
    $("input[title='Version Fixed']").val(xmlDocSwPrInfo.getElementsByTagName("VersionFixed")[0].childNodes[0].nodeValue);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57007656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档