[英]Sharepoint 2013 Javascript - Get List Fields
我正在使用SharePoint 2013開發和JavaScript進行雙重學習。
請參考以下內容。
function GetListFields(listname, viewname, ResultCallBackFunction)
{
var clientContext = new SP.ClientContext.get_current();
var web = clientContext.get_web();
var list = web.get_lists().getByTitle(listname);
if (viewname == "")
{
var view = list.get_views().getByTitle(viewname);
var listFields = view.get_viewFields();
}
else
{
this.listFields = list.get_fields().getByInternalNameOrTitle("Title");
}
clientContext.load(this.listFields);
clientContext.executeQueryAsync(onListFieldsQuerySucceeded, onListFieldsQueryFailed);
function onListFieldsQuerySucceeded()
{
console.log(listFields.get_fields().getByInternalNameOrTitle("Title").get_internalName());
var fldArray = new Array();
var fieldEnumerator = listFields.getEnumerator();
while (fieldEnumerator.moveNext())
{
var oField = fieldEnumerator.get_current();
fldArray.push(oField);
}
ResultCallBackFunction(fldArray);
}
function onListFieldsQueryFailed()
{
alert("Something went wrong. The End is Nigh.");
}
}
目的是調用GetListFields以返回具有列表字段名的數組。 這會在“ console.log ....”行中返回錯誤“無法獲取未定義或空引用的屬性'get_fields'”。 請注意,這是為了調試。
如果我更改函數GetListFields的代碼,如下所示:
var clientContext = new SP.ClientContext.get_current();
var web = clientContext.get_web();
var list = web.get_lists().getByTitle(listname);
if (viewname == "")
viewname = "All Items";
var view = list.get_views().getByTitle(viewname);
this.listFields = view.get_viewFields();
我確實得到了一個結果,但是其中包含一個名為“ LinkTitle”的字段,該字段在我的列表中沒有,因為我已將其重命名。 我想念什么?
除此之外,使用時出現錯誤
var listFields = ...
通過做固定
this.listFields = ...
但不了解區別。
感謝您的幫助或指點。
我花了一些時間在Sharepoint 2013環境中測試您的代碼。
我進行了一些更改,現在可以使用了。
您可以在下面看到生成的腳本。
這是有關結果數組中字段名稱的一些重要信息。
Sharepoint返回的視圖中的字段名稱是內部名稱,而不是字段標題。
這就是為什么獲得LinkTitle而不是字段的真實標題的原因。
當您在Sharepoint界面中創建字段時,Sharepoint會為該字段創建一個標題以及一個基於標題的內部名稱。
例如,如果我創建一個名為“我的測試字段”的字段,Sharepoint會說該字段的標題為“我的測試字段”,內部名稱為“ my_x0020_test_x0020_field”。
<script>
function GetListFields(listname, viewname, ResultCallBackFunction)
{
var clientContext = new SP.ClientContext.get_current();
var web = clientContext.get_web();
var list = web.get_lists().getByTitle(listname);
var listFields;
var view;
var defaultViewName = 'All Items';
if (viewname === "")
{
viewname = defaultViewName;
}
view = list.get_views().getByTitle(viewname);
listFields = view.get_viewFields();
clientContext.load(listFields);
clientContext.executeQueryAsync(onListFieldsQuerySucceeded, onListFieldsQueryFailed);
function onListFieldsQuerySucceeded()
{
var fldArray = new Array();
var fieldEnumerator = listFields.getEnumerator();
while (fieldEnumerator.moveNext())
{
var oField = fieldEnumerator.get_current();
fldArray.push(oField);
}
ResultCallBackFunction(fldArray);
}
function onListFieldsQueryFailed()
{
alert("Something went wrong. The End is Nigh.");
}
}
function MyCallBack(fieldArray) {
for (var x=0;x<fieldArray.length;x++) {
console.log(fieldArray[x]);
}
}
</script>
<a id="callGetListFields" href="#" onclick="GetListFields('MyListName','MyViewName', MyCallBack);">Call function GetListFields</a>
希望對您有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.