1

使用代码与 SharePoint 交互的最佳方式是什么?试图找出正确的追求区域而不浪费时间。C#?JavaScript?

现在我只是想制作一个由 SharePoint 列表驱动的 Web 部件......它基本上会创建一个导航栏,并且会显示该导航栏上的名称/链接,但是我已经配置了我的 SharePoint 列表。

4

3 回答 3

1

您可以将 C# 用于您的 webpart 功能。创建一个空项目,然后向项目中添加一个 Web 部件(非可视化 Web 部件)。使用 C# 对象模型查询 SPList 对象,然后执行 foreach 循环以将值吐出到导航栏中。

当您必须使用解决方案的不同版本号更新功能时,C# 的痛苦就来了。除非您在功能升级过程中表现出色。以前版本的 webpart 实例卡在存储它们的任何 ASPX 的 WP 区域中。我将解决方案保持在 1.0 版,然后在功能描述中记下构建的版本号,该版本号显示在站点设置的功​​能列表中。

您可以将 JavaScript 用于您的 Web 部件功能。创建一个空项目,然后向项目中添加一个 Web 部件(非可视化 Web 部件)。为特定导航列表上的 getitems 调用 Web 服务。Visual Studio 将为列表所在的 SP 站点创建一个强命名类,该类存储该站点中所有列表的定义。如果您的导航列表发生更改,请刷新 Web 服务并更新此强命名类。

当您的 Web 部件运行时,Web 服务将以登录的用户身份运行。因此,请确保所有访问者都具有查看权限,或者创建一个 AD 服务帐户来调用 Web 服务。一旦您的 Javascript 返回 XML,请使用 Lync to XML 之类的解析器来获取数据并将 HTML 输出到导航栏。

它更多的是关于舒适的偏好,而不是更好的偏好。如果您使用的是 SharePoint 2013,请制作 SP 应用程序而不是场功能。那么你就只能使用 JavaScript 和 Web 服务了。

于 2013-07-31T02:02:46.937 回答
1

您可以使用 lists.asmx webservice 和 javascript,下面是我用来查询 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'));

    });
}
于 2013-07-31T10:37:33.700 回答
0

我无权访问 Sharepoint 的后端(IT 限制),因此我只能自动使用 JavaScript 来执行此类任务,并且它与 Sharepoint Web 服务配合得很好。

我创建了一个我认为非常有用且易于使用的 JavaScript API:SharepointPlus

否则,还有一些替代方案,例如流行的SPServices

所以我想说这取决于你的需求、限制、技能以及你最终尝试做的事情的复杂性。

于 2013-07-31T18:27:29.520 回答