SharePoint 从列表中获取内容

问题描述 投票:0回答:1

我尝试为 SharePoint 2013 编写一个小应用程序,我们可以在其中备份 SQL Server 上的项目。现在,我尝试循环遍历 SharePoint 上的所有项目,以便获取字段的内容。比如国家=奥地利。

我尝试遵循本指南,但没有成功:https://msdn.microsoft.com/en-us/library/office/fp179912.aspx

这就是我得到的:

//Loads only a Projeclist from sharepoint
public SPpowerPlantList loadProjectFromSharePoint()
{
    SPpowerPlantList pplist = new SPpowerPlantList();
    ClientContext context = new ClientContext(powerPlantSite);
    Web web = context.Web;
    context.Load(web.Lists);
    context.ExecuteQuery();
    foreach (List list in web.Lists)
    {
        SPpowerPlant pp = new SPpowerPlant();
        //Stuff like this one should work but dont....
        pp.country = list.country
    } 
    return pplist;
}

任何建议都会很棒,对我的英语感到抱歉

编辑: SPpowerPlantList 应该是 SharePoint 中项目列表的所有项目的列表。 loadProjectsFromSharepoint 应该获取项目列表,然后我可以开始将值添加到 sql Server。像 SQL 表值 = Sharepoint 字段值这样的东西。

EDIT2 因此,对文件的访问现在适用于几个字段,但我知道我得到一个“属性或字段尚未初始化。尚未请求或请求尚未执行。可能需要显式地显示”请求例外。”

这是新代码:(某些字段的工作方式类似于货币)

//Loads only a Projeclist from sharepoint
    public SPpowerPlantList loadProjectFromSharePoint()
    {

        SPpowerPlantList powerPlantList = new SPpowerPlantList();
        
        ClientContext context = new ClientContext(powerPlantSite);
      
        List powerPlantsList = context.Web.Lists.GetByTitle("Power Plants");

        CamlQuery query = CamlQuery.CreateAllItemsQuery();
        query.ViewXml = @"<View><Query> </Query></View>";
        ListItemCollection items = powerPlantsList.GetItems(query);

        context.Load(items);
        context.ExecuteQuery();
        foreach (ListItem listItem in items)
        {
            SPpowerPlant powerPlant = new SPpowerPlant();

            powerPlant.projectName = listItem["Project"].ToString();
            powerPlant.location = listItem["Loacation"].ToString();
            powerPlant.country = listItem["Country"].ToString();
            powerPlant.currency = listItem["Currency"].ToString();
            powerPlant.shortName = listItem["Short Name"].ToString();
            powerPlant.spaceUrl = listItem["Space"].ToString();
            powerPlant.numberOfWtgs = Convert.ToInt32(listItem["Number of WTGs"]);
            powerPlant.mwWtg = Convert.ToDouble(listItem["MW WTG"]);
            powerPlant.mwTotal = Convert.ToDouble(listItem["MW Total"]);
            powerPlant.projectShareWeb = Convert.ToDouble(listItem["Project Share "]);
            powerPlant.mwWeb = Convert.ToDouble(listItem["MW "]);
            powerPlant.phaseDescription = listItem["Phase Description"].ToString();
            powerPlant.projectProgress = Convert.ToDouble(listItem["Project Progress"]);
            powerPlant.mwDeveloped = Convert.ToDouble(listItem["MW developed"]);
            powerPlant.possibleWtgTypes = listItem["Possible WTG Types"].ToString();
            powerPlant.hubHeight = listItem["Hub Height"].ToString();
            powerPlant.allPermits = Convert.ToDateTime(listItem["All Permits"]);
            powerPlant.cod = Convert.ToDateTime(listItem["COD"]);
            powerPlant.projectManager = listItem["Project manager"].ToString();
            powerPlant.technology = listItem["Technology"].ToString();
            powerPlant.state = listItem["State"].ToString();
            powerPlant.stateSince = Convert.ToDateTime(listItem["State since"]);
            powerPlant.visibility = listItem["Visibillity"].ToString();
            powerPlant.phase = listItem["Phase"].ToString();
            powerPlant.phaseNumber = listItem["Phase Number"].ToString();
            
            //Console.WriteLine(listItem["Currency"]);

            powerPlantList.Add(powerPlant);

        }

        return powerPlantList;

    }

我用 lambda 表达式将其绑定,但没有成功。

c# sharepoint sharepoint-2013
1个回答
0
投票

问题是我的列表项[“名称”]不正确。 要让这些东西发挥作用,您需要访问共享点网站并在在那里排序时查看链接,您会看到列表项的正确名称。

新的工作形式:

 //Loads only a Projeclist from sharepoint
    public SPpowerPlantList loadProjectFromSharePoint()
    {

        SPpowerPlantList powerPlantList = new SPpowerPlantList();

        ClientContext context = new ClientContext(powerPlantSite);

        List powerPlantsList = context.Web.Lists.GetByTitle("Power Plants");

        CamlQuery query = CamlQuery.CreateAllItemsQuery(100);
        //query.ViewXml = @"<View><Query> </Query></View>";
        ListItemCollection items = powerPlantsList.GetItems(query);

        //context.Load(web.Lists,
        //             lists => lists.Include(list => list.Title, // For each list, retrieve Title and Id. 
        //                                    list => list.Id,
        //                                    list => list.Description));

        context.Load(items);
        context.ExecuteQuery();
        foreach (ListItem listItem in items)
        {
            SPpowerPlant powerPlant = new SPpowerPlant();

            powerPlant.projectName = listItem["Title"].ToString();
            powerPlant.location = listItem["Location"].ToString();
            powerPlant.country = listItem["Country"].ToString();
            powerPlant.currency = listItem["Currency"].ToString();
            powerPlant.shortName = listItem["Short_x0020_Name"].ToString();
            powerPlant.spaceUrl = listItem["Space"].ToString();
            powerPlant.numberOfWtgs = Convert.ToInt32(listItem["Number_x0020_of_x0020_WTGs"]);

            //Console.WriteLine(listItem[""]);

            //powerPlantList.Add(powerPlant);

        }

        return null;

    }
© www.soinside.com 2019 - 2024. All rights reserved.