![](/img/trans.png)
[英]Trying to hide field in New/Edit form of Sharepoint list based on currently logged in user belonging to a Sharepoint group
[英]How to parse XML to a column(field) of SharePoint List on a new/edit form via CEWP
問題描述:
單擊加載按鈕后,我想解析XML以自動填充新/編輯表單上的某些列(單行文本)。
背景:
XML來自外部資源,而不是來自我或任何其他SP網站/列表/項目。 當前,用戶在創建新項目或更新現有項目時,必須檢查外部資源的網頁並將所需的信息復制/粘貼到新/編輯表單中。 外部網站提供了一個API,該API可讓我以XML格式獲取信息,因此我正試圖使該任務對我的網站用戶來說更加容易。 這樣的想法是,他們只需要輸入一個6位數字來標識外部資源,然后就可以將所需的信息放入新/編輯表單中,因此他們只需要按Save即可提交/更新此列表中的項目。 。
到目前為止,我所做的是:
我只是SharePoint用戶,不是開發人員,也不熟悉JS。 幸運的是,我之前可以找到一些文章作為說明和共享代碼,以實現一些功能,例如通過jQuery.SPservice層疊下拉列表。
我做了一些研究,以使解析首先可以作為下面的代碼運行,現在可以正常運行了。 但是它僅將XML解析為我自己的CEWP,該CEWP被添加到新的/編輯表單中,而不是添加到新的/編輯表單中顯示的列表列中。 理想情況下,如果我知道該列的html標記ID,則應該能夠完成這項工作。
但是,在查看了“ SPCascadeDropdowns”如何識別目標列之后,似乎不是通過標簽ID來實現,而是通過一個名為“ StaticName”的東西來實現,然后我在這里尋求幫助。
當前狀態:
這是圖像和代碼供您參考。
CEWP中運行以下代碼,該代碼添加在新/編輯表單的頂部。
<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>
<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>
好吧,這幾天我做了更多的研究,並且解決方案比我想象的要簡單得多。(如果我熟悉jQuery似乎很容易,但是我不是:P,所以花了我一段時間才得到它完成)。
但是,仍然有些棘手的問題才能使它起作用,並且在此討論中 LZ_MSFT的第一個答案對我有很大幫助。
如果看不到他的回答,我將無法完成此任務,因為我會因為代碼中沒有“要求歸檔”而陷入困境,並且不知道為什么當所有樣本都幾乎相同但所有人都贏了時卻無法正常工作不行 我正在測試其他討論中的所有樣本,但是沒有人提到。
您使用jQuery設置column(field)的模板是
$("input[title='the display name in the form']").val("the text value you want to set");
如果它是必填列(字段),則必須
$("input[title='the display name in the form Require Field']").val("the text value you want to set");
請注意,這只是顯示名稱,而不是FieldInternalName,至少在我的情況下,如果title =后跟代碼中的FieldInternalName,它將不起作用。 我想,如果您要使用此代碼來使其工作,那么您將需要表單中的唯一顯示名稱。
另外,在我的情況下,我將需要來自XML的值,所以這是我的代碼,用於以XML的形式設置column(field)的值。
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.