如何删除列表';在C#中以编程方式查看Sharepoint 2010?
如何以编程方式删除SharePoint列表视图 MyCustomView:是我通过编程创建的自定义视图。我想删除使用相同名称创建的所有视图如何删除列表';在C#中以编程方式查看Sharepoint 2010?,c#,view,sharepoint-2010,C#,View,Sharepoint 2010,如何以编程方式删除SharePoint列表视图 MyCustomView:是我通过编程创建的自定义视图。我想删除使用相同名称创建的所有视图 using (SPSite oSPsite = new SPSite("http://xxxxxxxxxx:20000/sites/myWA/test")) { using (SPWeb oSPWeb = oSPsite.OpenWeb())
using (SPSite oSPsite = new SPSite("http://xxxxxxxxxx:20000/sites/myWA/test"))
{
using (SPWeb oSPWeb = oSPsite.OpenWeb())
{
SPList oTransDataList = oSPWeb.Lists["MyDataList"];
oSPWeb.AllowUnsafeUpdates = true;
SPViewCollection oViewCollection = oTransDataList.Views;
int i = 1;
foreach (SPView oViewColl in oViewCollection)
{
if (oViewColl.Title == "MyCustomView")
{
oViewCollection.Delete(oViewColl.ID);
//oTransDataList.Views.Delete(oViewColl.ID);
oTransDataList.Update();
}
}
}
}
我注意到
SPViewCollection-oViewCollection=oTransDataList.Views代码>仅包含一个视图。我可以知道为什么会发生这样的事情吗?我有10多个视图,其中9个视图是同名的自定义视图。例如,MyCustomView我已经用相同的名称编程创建了10次视图,并进行了测试,它显示了10个视图
SPViewCollection-oViewCollection=oTransDataList.Views
using (SPSite oSPsite = new SPSite("http://SampletestSite.com/Trial"))
{
oSPsite.AllowUnsafeUpdates = true;
using (SPWeb oSPWeb = oSPsite.OpenWeb())
{
oSPWeb.AllowUnsafeUpdates = true;
SPList list = oSPWeb.Lists["Sample"];
StringCollection strViewFields = new StringCollection();
strViewFields.Add("Title");
strViewFields.Add("FirstName");
strViewFields.Add("LastName");
// create a standard view with the set of fields defined in the collection
list.Views.Add("SampleTest", strViewFields, String.Empty,
100, true, false, SPViewCollection.SPViewType.Html, false);
list.Update();
oSPWeb.AllowUnsafeUpdates = false;
}
oSPsite.AllowUnsafeUpdates = false;
}
在第行下面的代码注释中,尝试执行
oTransDataList.Views.Delete(oViewColl.ID);//给出的错误id不匹配
为oViewCollection添加watch。计数并检查,您甚至可以通过为oViewCollection添加watch[索引]来验证标题。看起来您走对了方向。但是,我建议分两步进行。首先,收集所需的视图。第二,删除视图。组合这些步骤的问题在于,删除视图后,循环的集合会发生更改
using (SPSite oSPsite = new SPSite("http://xxxxxxxxxx:20000/sites/myWA/test"))
{
using (SPWeb oSPWeb = oSPsite.OpenWeb())
{
SPList oTransDataList = oSPWeb.Lists["MyDataList"];
oSPWeb.AllowUnsafeUpdates = true;
List<Guid> ids = new List<Guid>();
SPViewCollection oViewCollection = oTransDataList.Views;
foreach (SPView oViewColl in oViewCollection)
{
if (oViewColl.Title == "MyCustomView")
{
ids.Add(oViewColl.ID);
}
}
foreach (Guid id in ids)
{
oViewCollection.Delete(id);
}
}
}
您好,Suchithra,您提供的代码是用于创建视图的,我不需要它。但是您在代码下面提供的注释很有帮助。oTransDataList.Views.Delete(oViewColl.ID);实际上是不需要的,谢谢你这么多的帮助,用第二种方法,你提供的代码为我工作得很好。。非常感谢您的帮助,上面的片段现在是正确的答案。我用正确的(工作代码)修改了错误的代码
for (int i = oViewCollection.Count - 1; i >= 0; --i)
{
SPView oViewColl = oViewCollection[i];
if (oViewColl.Title == "MyCustomView")
{
oViewCollection.Delete(oViewColl.ID);
}
}