2013-07-31 48 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一些替代品。

所以我会说这取决于你的需求,限制,技能和最后你想要做的复杂性。