1

我目前正在开发一个 SharePoint Web 部件,它将根据列表填充一些内容。一切都按预期工作,但我似乎无法访问包含所有列表项的变量!

我要访问的变量是theValue1.

代码:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Administration;

namespace SPListWebPart.VisualWebPart1 {
    public partial class VisualWebPart1UserControl : UserControl {
        public void Page_Load(object sender, EventArgs e) {
            string theValue1;
            SPSite site = new SPSite("http://maindt/sites/dev");
            SPWeb web = site.OpenWeb();
            SPList list = web.Lists["Links"];

            foreach (SPListItem item in list.Items) {
                theValue1 = item["URL"].ToString();
            }
        }
    }    
}
4

3 回答 3

2

要绕过错误消息,您只需要提供一个默认值:

string theValue1 = string.Empty;

话虽如此,您当前的代码只会设置theValue1为 中的最后一个URL list.Items,因此您的循环可以重写为:

theValue1 = list.Items.Last()["URL"].ToString();

如果您希望字符串代表所有项目,您可能需要考虑使用以下内容:

theValue1 = string.Join(", ", list.Items.Select(item => item["URL"].ToString()));

如果要存储List<string>所有 URL,可以使用:

List<string> theValues = list.Items.Select(i => i["URL"].ToString()).ToList();
于 2013-07-05T20:06:29.240 回答
0

你需要为它设置一个默认值,否则如果没有项目会发生什么?

此外,您当前的代码只是获取最后一个值并将其放入字符串中。如果你想要所有的值使用这个:

public void Page_Load(object sender, EventArgs e)
{
    string theValue1 = list.Items.Last()["URL"].ToString();
    SPSite site = new SPSite("http://maindt/sites/dev");
    SPWeb web = site.OpenWeb();
    SPList list = web.Lists["Links"];
}

但是,如果您想要所有要查找的值,Enumerable并且Select

public void Page_Load(object sender, EventArgs e)
{
    IEnumerable<string> theValues1 = list.Items.Select(i => i["URL"].ToString());
    SPSite site = new SPSite("http://maindt/sites/dev");
    SPWeb web = site.OpenWeb();
    SPList list = web.Lists["Links"];
}
于 2013-07-05T20:10:02.007 回答
0
  • 您正在覆盖theValue1循环的每次迭代。
  • 如果你想在其他地方访问你的变量,把它放在Page_Load函数之外
于 2013-07-05T20:30:56.513 回答