2013-04-30 48 views
2

我想在SPList上查詢,但我得到一個錯誤,說該列表不存在。 如何以正確的方式讀取當前上下文? 以某種方式是部署問題?列表'我的列表'不存在與網址的網址

var clientContext = new SP.ClientContext.get_current();; 
var oList = clientContext.get_web().get_lists().getByTitle("MyList"); 

var camlQuery = new SP.CamlQuery(); 
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name="SearchUserName" /><Value Type="Text">' + loginName + '</Value></Eq></Where></Query></View>'); 
this.collListItem = oList.getItems(camlQuery); 

clientContext.load(collListItem); 

clientContext.executeQueryAsync(Function.createDelegate(this, function (sender, args) { 
    //do something 
}), Function.createDelegate(this, function (sender, args) { 
    //log error 
})); 

我得到的錯誤:列表「MYLIST」並不在現場與URL存在「......網站路徑」

我在做什麼錯?是否有另一種閱讀當前上下文的方式?

回答

2

你可能遇到了一個簡單的問題,它絆倒了我,讓

當您使用getByTitle()你需要使用List的顯示名稱,

是您的列表顯示名稱「MYLIST」或可能它是「我的列表」?

  • 列表 '標題'=列表顯示名稱(通常有空格)
  • 列表 '名稱'=列出內部名稱(通常是無空格或特殊字符)

要查找顯示名稱,請查看在「網站內容」頁面中調用列表的內容。

要查找內部名稱,請在鼠標懸停(或單擊)「站點內容」中的列表名稱時查看URL。

嘗試get_web().get_lists().getByTitle("My List");

1

你確定get_current實際上是返回正確的上下文嗎?

指定上下文可能更安全。

此外,您可以使用列表ID而不是名稱,然後通過ID獲取。

2

記住SharePoint將每個子網站視爲一個單獨的網站。如果您的代碼在您的SharePoint網站的根目錄上運行,但列表駐留在一個子網站中,則您的代碼將無法工作。然後,您需要在設置客戶端上下文時指定該網站。