如何以编程方式删除SharePoint列表视图?
MyCustomView:是我以编程方式创建的自定义视图。我想删除所有使用相同名称创建的视图
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;
只包含1个视图。我可以知道为什么会发生这种情况吗,我有10多个视图,其中9个视图是使用相同名称自定义的。即。MyCustomView
看来您在正确的轨道上。但是,我建议分两个步骤执行此操作。首先,收集所需的视图。其次,删除视图。合并步骤的问题在于,删除视图后,您正在循环浏览的集合会发生更改。
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);
}
}
}
作为另一种选择,如果您向后逐步浏览集合,则可以合并这些步骤:
for (int i = oViewCollection.Count - 1; i >= 0; --i)
{
SPView oViewColl = oViewCollection[i];
if (oViewColl.Title == "MyCustomView")
{
oViewCollection.Delete(oViewColl.ID);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句