我在與SharePoint 2013開發和JavaScript的雙重學習曲線。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 ....」處返回一個錯誤「Unable to get property'get_fields'undefined or null reference」。請注意,這是爲了我的調試。
如果我改變代碼功能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 = ...
固定的,但不明白的區別時,我得到了一個錯誤。
感謝您的任何幫助或指針。
謝謝你。 對不起,我無法對評論投票,但網站報告以下內容: –