2013-07-31 50 views
1

只是一個問題:查詢SharePoint列表通過編程

什麼是與SharePoint與代碼交互的最佳方式?試圖找出正確的領域而不浪費時間。 C#? JavaScript的?

現在我只是試圖讓被SharePoint列表驅動的Web部件...它基本上會創建一個導航欄和跨導航欄中的名稱/鏈接將顯示。但是我有我的SharePoint列表配置。

+0

你可以使用任何適合你的情況。既然沒有標準,什麼對你來說「更好」,這個問題就不能像現在這樣回答。 –

回答

1

您可以使用C#爲您的網頁組件的功能。製作一個空白的項目,然後在項目中添加一個webpart(非可視化webpart)。使用C#對象模型來查詢SPList對象,然後執行一個foreach循環來將值吐出到導航欄中。

與C#中的痛苦來當你有針對的解決方案不同的版本號更新您的功能。除非您對功能升級過程非常滿意。先前版本的webpart實例被卡在WP區域中,不管它存儲在哪個ASPX中。我將我的解決方案保留在版本1.0,然後記下功能描述中的版本號,該版本號顯示在「站點設置」的功能列表中。

您可以使用JavaScript來實現您的Web部件功能。製作一個空白的項目,然後在項目中添加一個webpart(非可視化webpart)。在特定的導航列表中調用web服務以獲取getitems。 Visual Studio將爲列表所在的SP站點創建一個強命名類,用於存儲該站點中所有列表的定義。如果您的導航列表發生更改,請刷新Web服務並更新此強命名的類。

當你的網絡的一部分運行,網絡服務將作爲被登錄的用戶運行。因此,要麼確保所有遊客有查看權限,或使AD服務帳戶來調用Web服務。一旦你的Javascript返回XML,使用像Lync這樣的Parcer來獲取數據並將HTML吐出到導航欄中。

它更多的是舒適的偏好比哪個更好。如果您使用的是SharePoint 2013,請製作一個SP應用程序而不是農場功能。那麼你只能使用JavaScript和Web服務。

+1

更多信息。謝謝! – mwilson

1

您可以在lists.asmx web服務和javascript,波紋管是代碼taht我用它來查詢SharePoint列表。

var url = document.URL; 
if(url.indexOf("https://") != -1) 
{ 
    var urllink = document.location.href.replace("https://",""); 
    var prefix = "https://"; 
} 
else 
{ 
    var urllink = document.location.href.replace("http://",""); 
    var prefix = "http://"; 
} 
var link = (urllink.split("/"))[0]; 

$(document).ready(function() { 
    var soapEnv = 
     "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \ 
      <soapenv:Body> \ 
       <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
        <listName>Web Pages</listName> \ 
        <viewFields> \ 
         <ViewFields> \ 
          <FieldRef Name='Title' /> \ 
         </ViewFields> \ 
        </viewFields> \ 
       </GetListItems> \ 
      </soapenv:Body> \ 
     </soapenv:Envelope>"; 

    $.ajax({ 
     url: prefix+link+"/_vti_bin/lists.asmx", 
     type: "POST", 
     dataType: "xml", 
     data: soapEnv, 
     complete: processResult, 
     contentType: "text/xml; charset=\"utf-8\"" 
    }); 
}); 

var names = new Array(); 
var href = new Array(); 
var iterator; 

function processResult(xData, status) { 
    $(xData.responseXML).find("z\\:row, row").each(function() { 

    names.push($(this).attr('ows_Title')); 
    href.push($(this).attr('ows_FileRef')); 

    }); 
} 
0

我沒有訪問SharePoint(IT限制)的後端,所以我只能autorized使用JavaScript這類的任務,它與SharePoint Web服務的偉大工程。

我創建了一個JavaScript API,可是,我認爲,是非常有用的,易於使用:SharepointPlus

否則有喜歡流行SPServices一些替代品。

所以我會說這取決於你的需求,限制,技能和最後你想要做的複雜性。