我目前正在开发一个SharePoint Web部件,它将填充基于List的一些东西。一切都按预期工作,但我似乎无法访问包含所有列表项的变量!
我想要访问的变量是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();
}
}
}
}
答案 0 :(得分:2)
要解决错误消息,您只需提供默认值:
string theValue1 = string.Empty;
话虽如此,您当前的代码只会将theValue1
设置为list.Items
中的 last 网址,因此您的循环可以重写为:
theValue1 = list.Items.Last()["URL"].ToString();
如果您希望字符串代表项目的所有,您可能需要考虑使用以下内容:
theValue1 = string.Join(", ", list.Items.Select(item => item["URL"].ToString()));
如果您想存储所有网址的List<string>
,可以使用:
List<string> theValues = list.Items.Select(i => i["URL"].ToString()).ToList();
答案 1 :(得分: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"];
}
答案 2 :(得分:0)
theValue1
。 Page_Load
函数