2017-12-08 2 views
0

팀 사이트가있는 SharePoint 2013과 4 개의 하위 사이트가 있습니다. 각 하위 사이트에는 하나의 문서 라이브러리가 있습니다.SharePoint 2013 : 여러 문서 라이브러리에서 총 문서 수를 얻으려면

각 문서 라이브러리의 총 문서 수를 표시 할 수있는 팀 사이트 홈 페이지에서 대시 보드와 같은 것을 만듭니다.

이 대시 보드는 문서가 추가되거나 제거 될 때마다 자동으로 업데이트되기를 원합니다.

이 문제를 해결하는 방법을 알려주세요.

답변

0

성능상의 이유로 클라이언트에서 항목 수를 계산하는 것이 가장 좋습니다. 아래 코드와 같이 모든 목록에 카운터 기능을 호출 할 수 있습니다.

ExecuteOrDelayUntilScriptLoaded(CountListItems, "sp.js"); 

var clientContext = null; 
var web = null; 


function CountListItems() 
{ 

clientContext = new SP.ClientContext.get_current(); 

web = clientContext.get_web(); 

var list = web.get_lists().getByTitle("mydocumnets"); 

var camlQuery = new SP.CamlQuery(); 

var qry = "<View><Query><Where></Where></Query></View>"; 

camlQuery.set_viewXml(qry); 

this.listItems = list.getItems(camlQuery); 

clientContext.load(listItems, 'Include(Title)'); 

clientContext.executeQueryAsync(Function.createDelegate(this, this.onSuccess), Function.createDelegate(this, this.onFailed)); 

} 

function onSuccess(sender, args) { 

alert(this.listItems.get_count()); 

} 

function onFailed(sender, args) { 
alert('request failed '); 
} 
+0

감사합니다. Mahdi! 그러나 또 다른 도전에 직면 해있다. 나는 빈 곳 "div"(say : div class = "count")를 내 SharePoint 홈 페이지에서 출력하고 싶습니다. 이 일을 어떻게 할 수 있는지 안내해 주시겠습니까? – Simsumm

+0

아, 네, onSuccess 함수에서 결과에 액세스 할 수 있습니다. 당신은 this.listItems 콜렉션에서 반복하고 html을 생성 한 다음 div에 배치 할 수 있습니다. 예를 들어 document.getElementById (elementID) .innerHTML = 'your hire html'; –

+0

나는 이것을 시도했다 : function onSuccess (보낸 사람, args) { document.getElementById ('id name'). innerHTML = this.listItems.get_count(); } 그리고 "null의 InnerHTML '속성을 설정할 수 없습니다."라는 오류가 반환되었습니다. 이 일을하기 위해 내가해야 할 일에 대한 어떤 생각? 도와 주셔서 감사합니다. – Simsumm

관련 문제