我需要获取项目的GUID。我知道SiteURL,列表名称和项目名称。如何在list.items中使用splistitem li并且遍历每个项目(如果li.name == myitemname然后分配strguid = li.uniqueid.tostring()
有没有办法不使用foreach循环,因为我知道项目的名称?这将节省循环项目的时间。
答案 0 :(得分:1)
如果要在splistcollection中的唯一项目上创建spquery,则只返回一个元素,您可以在没有foreach的情况下获取该元素
答案 1 :(得分:0)
using (SPSite site = new SPSite(SiteURL))
{
using (SPWeb web = site.OpenWeb())
{
SPList apps = web.GetList(web.Url + "/Lists/MyList");
SPQuery query = new SPQuery();
query.Query = String.Format("<Where><Eq><FieldRef Name='Title' /><Value Type='String'>{0}</Value></Eq></Where>", _title);
items = apps.GetItems(query);
if(items.Count > 0)
{
Guid id = items[0].UniqueId;
}
}
}
答案 2 :(得分:0)
可以工作,但我有11个文件,它们都有相同的文件名“license.txt”,它们位于同一个文档库中。 1个文件“license.txt”位于根文档库下,其他10个位于文档库中的10个不同文件夹中。那么如果我正在寻找Demo文件夹中的license.txt文件呢?
此代码有效但只能在根目录下找到license.txt。
private void btnGetFileGuid_Click(object sender, EventArgs e)
{
using (SPSite site = new SPSite("https://www.abc.com/sites/Software"))
{
using (SPWeb web = site.OpenWeb())
{
SPList spList = web.Lists["Auto Cad"];
string fileName = "license.txt";
SPQuery query = new SPQuery();
query.Query="<Where><Eq><FieldRef Name='FileLeafRef' /><Value Type='Text'>" + fileName + "</Value></Eq></Where>";
SPListItemCollection items = spList.GetItems(query);
if (items.Count > 0)
{
Guid id = items[0].UniqueId;
lblGuid.Text = id.ToString();
}
}
}
}
答案 3 :(得分:0)
尝试以下操作似乎正在发挥作用。
query.ViewAttributes = "Scope=\"Recursive\"";
或
query.ViewAttributes = "Scope='RecursiveAll'";