我正在尝试在gridview中显示列表项。
请帮我找一个访问列表项的方法。
using (SPSite site = new SPSite("http://mysitehere......"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["TestList"];
.......
.......
}
}
请帮助我访问列表项值。
答案 0 :(得分:7)
下面的代码可以解决问题,获取完整的article from msdn here
using (SPSite site = new SPSite("http://mysitehere......"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["TestList"];
SPListItemCollection collListItems = list.Items;
foreach (SPListItem oListItem in collListItems)
{
string value = SPEncode.HtmlEncode(oListItem["Field1_Name"]);
// do something with value
}
}
}
答案 1 :(得分:5)
您可以使用以下任何一项:
SPList list;
foreach (SPListItem item in list.Items)
{
string title = item["Title"];
}
SPQuery query = new SPQuery();
query.ViewFields = "<FieldRef Name='Title'/>";
SPListItemCollection items = list.GetItems(query);
foreach (SPListItem item in list.Items)
{
string title = item["Title"];
}
for (int i = 0; i < list.Items.Count; i++ )
{
string title = list.Items[i]["Title"];
}
SPList list;
foreach (SPListItem item in list.Items)
{
string title = item["Title"];
}
SPQuery query = new SPQuery();
query.ViewFields = "<FieldRef Name='Title'/>";
SPListItemCollection items = list.GetItems(query);
foreach (SPListItem item in list.Items)
{
string title = item["Title"];
}
for (int i = 0; i < list.Items.Count; i++ )
{
string title = list.Items[i]["Title"];
}
从性能的角度来看,我建议使用SP查询,然后您可以指定要获取的字段以及是否使用列表项获取任何关联的元数据。这样可以减少数据库调用。
亲切的问候,
答案 2 :(得分:3)
使用SPDataSource在网格视图中显示列表项,即创建和配置SPDataSource对象并将其绑定到SPGridView控件。
答案 3 :(得分:2)
为了在gridview中显示项目(如果你不想使用SPGridView),我会使用GetDataTable方法,而不是像许多答案一样使用foreach循环。
if (items.Count > 0)
{
DataTable dt = items.GetDataTable();
GridView1.DataSource = dt;
GridView1.DataBind();
}
答案 4 :(得分:1)
好吧,我没有做任何分享工作,但我相信你可以使用:
foreach (SPListItem item in list.Items)
或
foreach (SPListItem item in list.GetItems(view)) // or query
或通过索引或guid访问:
SPListItem item = list.Items[10];
SPListItem item = list.Items[guid];
答案 5 :(得分:1)
未知(雅虎)建议的SPQuery方法是要走的路,但是你应该记住SPQuery的默认行限制为100:
try
{
using (SPSite site = new SPSite(theURL))
{
SPWeb web = site.OpenWeb();
SPList list = web.Lists["TheNameOfTheList"];
//search each ListItem where the date is after 1/1 2009
SPQuery query = new SPQuery();
//the default is 100, which is less then the expected max
query.RowLimit = 500;
// The U2U CAML Query builder rules :-)
query.Query = "<Where><Gt><FieldRef Name='StartDate' /><Value Type='DateTime'>";
query.Query += "2009-01-01T00:00:00Z</Value></Gt></Where>";
SPListItemCollection resultset = list.GetItems(query);
foreach (SPListItem item in resultset)
{
// do something
}
}
}
答案 6 :(得分:1)
如果您使用的是.NET 3.5,我建议您使用linq数据源和spgridview将splistitems绑定到gridview。为您节省大量时间。 我的博客上有example这个。 要显示图像,您必须获取图像的网址。这是一个例子:
SPListItem item = GetItem();
string imagefieldhtml = item["NameOfImageField"].ToString();
ImageFieldValue imagefield = new ImageFieldValue(imagefieldhtml);
var url = imagefield.ImageUrl;
url变量现在将保存图片网址。
答案 7 :(得分:0)
好的,我已经解决了上述问题。在我的情况下,我不需要使用SPEncode.HTML,所以我已经注释掉了所有不需要的东西。如果有其他人需要,这是固定代码:
using (SPSite site3 = SPContext.Current.Site)
{
using (SPWeb web2 = site3.OpenWeb())
{
// SPWeb site3 = SPContext.Current.Site.RootWeb;
SPList list2 = web2.Lists["Configuration"];
SPListItemCollection collListItems = list2.Items;
foreach (SPListItem oListItem in list2.Items)
{
//string value = SPEncode.HtmlEncode.ToString(oListItem["List name"]);
string valueListName = oListItem["List name"].ToString();
string valueListURL = oListItem["List URL"].ToString();
}
}
}