如何删除列表';在C#中以编程方式查看Sharepoint 2010?

如何删除列表';在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())

如何以编程方式删除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仅包含一个视图。我可以知道为什么会发生这样的事情吗?我有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);
    }
}