基本SharePoint web部件C#

基本SharePoint web部件C#,c#,.net,sharepoint,web-parts,C#,.net,Sharepoint,Web Parts,我以前从未在C#中做过工作(虽然在PHP中做过不少),但我的任务是制作一个SharePoint Web部件。我需要它从SharePoint中提取列表数据。我真的不知道应该从哪里开始,所以我开始做一个“检查列表是否存在”函数。这只是检查字符串“listName”并将“thislistexists”打印到页面上 谁能帮我写代码,至少让我走上正轨?谢谢 namespace SlideShowWebPart { public class SlideShowGuide : WebPart

我以前从未在C#中做过工作(虽然在PHP中做过不少),但我的任务是制作一个SharePoint Web部件。我需要它从SharePoint中提取列表数据。我真的不知道应该从哪里开始,所以我开始做一个“检查列表是否存在”函数。这只是检查字符串“listName”并将“thislistexists”打印到页面上

谁能帮我写代码,至少让我走上正轨?谢谢

namespace SlideShowWebPart
  {
    public class SlideShowGuide : WebPart
      {
        protected override void Render(System.Web.UI.HtmlTextWriter output)
          {
            using (SPWeb web = SPContext.Current.Site.OpenWeb("http://www.school.edu"))
              {
                string listName = "List123ABC";
                var lists = web.Lists;
                foreach (SPList list in lists)
                  {
                    if (list.Title.Equals(listName))
                       output.Write("<b>This list exists</b>");
                  }
              }
          }
      }
  }
名称空间幻灯片演示Web部件
{
公共类幻灯片指南:Web部件
{
受保护的覆盖无效渲染(System.Web.UI.HtmlTextWriter输出)
{
使用(SPWeb web=SPContext.Current.Site.OpenWeb(“http://www.school.edu"))
{
字符串listName=“List123ABC”;
var list=web.list;
foreach(列表中的SPList列表)
{
if(list.Title.Equals(listName))
output.Write(“此列表存在”);
}
}
}
}
}

以下内容可能不准确,因为在没有堆栈跟踪的情况下很难识别问题。

SPSite.OpenWeb()
采用相对URL。请尝试删除主机名并仅包括路径。(在您的示例中,没有列出任何路径)。如果您正试图打开当前web,那么调用无参数重载应该没问题

如果需要使用URL访问站点,可以将绝对URL传递到
SPSite
构造函数中

或者,您可以通过以下方式获得对当前web的引用:

SPWeb web = SPContext.Current.Web;
小心不要处置从SPContext.Current获取的对象,因为这将导致SharePoint出现问题。

您可以使用web.lists[“listName”]检查是否存在列表。一旦你有了清单,你就可以通过相同的概念来引用这些项目

SPList list = web.lists["listName"];
list.items["ColumnName"]; // returns the value as a string representation

如果您只想访问列表数据,请获取sharepoint designer的副本,导航到www.endusersharepoint.com并查看数据视图web部件上的文章系列

看起来你正朝着正确的方向前进,这个代码不起作用吗?它给了我一个错误,它导致了一个问题,页面无法加载。您应该可以通过挖掘SharePoint日志或修改web.config来找到确切的错误:不幸的是,堆栈溢出不应该是第101课的课程,而应该是一个直接问答网站,这只会让那些不愿花时间阅读大量可用信息的人变得懒惰。@Brian,我同意这不应该是101课程,但OP似乎有一个合法的问题@凯尔,我想你是对的。错误很可能来自对OpenWeb()的调用。OP应该在他的代码周围放一个try/catch,并使用Output对象来编写堆栈跟踪@布莱恩,我也同意,所以不应该是101课程,但我试着让这成为一个有重点的问题。我尽量不发布基本的开放式问题,今后我会更加努力不发布。我不同意他的看法,他问有人给他指出访问列表数据的正确方向。这正是我所做的,他的问题在询问评论后发生了变化。不,他问是否有人可以帮助识别他的代码中导致Web部件出错的原因。然而,鉴于此,您的回答确实指出了OP可以优化其代码的方法。
SPWeb web = SPContext.Current.Web;
SPList list = web.lists["listName"];
list.items["ColumnName"]; // returns the value as a string representation