如何重新排序SharePoint视图中的字段/列?

时间:2008-09-24 14:30:59

标签: sharepoint

我在列表和视图中添加了一个新字段。要将该字段添加到视图,我正在使用此代码:

view.ViewFields.Add("My New Field");

然而,这只是在视图的最后处理。如何将字段添加到特定列,或重新排列字段顺序? view.ViewFields是一个SPViewFieldCollection对象,它继承自SPBaseCollection,并且没有可用的Insert / Reverse / Sort / RemoveAt方法。

4 个答案:

答案 0 :(得分:3)

我发现从列表中删除所有项目并按照我想要的顺序读取它们(虽然有点激烈)。这是我正在使用的代码:

string[] fieldNames = new string[] { "Title", "My New Field", "Modified", "Created" };
SPViewFieldCollection viewFields = view.ViewFields;
viewFields.DeleteAll();
foreach (string fieldName in fieldNames)
{
    viewFields.Add(fieldName);
}
view.Update();

答案 1 :(得分:1)

您可以使用默认方法:

    int newFieldOrderIndex = 1;
    SPViewFieldCollection viewFields = view.ViewFields;
    viewFields.MoveFieldTo(fieldName, newFieldOrderIndex);
    view.Update();

https://msdn.microsoft.com/EN-US/library/microsoft.sharepoint.spviewfieldcollection.movefieldto.aspx

答案 2 :(得分:0)

您必须使用follow方法重新排序字段

 string reorderMethod = @"<?xml version=""1.0"" encoding=""UTF-8""?> 
                          <Method ID=""0,REORDERFIELDS""> 
                          <SetList Scope=""Request"">{0}</SetList>  
                          <SetVar Name=""Cmd"">REORDERFIELDS</SetVar>  
                          <SetVar Name=""ReorderedFields"">{1}</SetVar>  
                          <SetVar Name=""owshiddenversion"">{2}</SetVar>  
                          </Method>";

答案 3 :(得分:0)

我有两个不同的列表和类似的视图。如果用户在源视图中更改顺序,我想更新目标列表视图字段顺序。

ViewFieldCollection srcViewFields = srcView.ViewFields;
ViewFieldCollection destViewFields = destView.ViewFields;

var srcArray = srcViewFields.ToArray<string>();
var destArray = destViewFields.ToArray<string>();

foreach (var item in destArray)
{
    destViewFields.MoveFieldTo(item, Array.IndexOf(srcArray, item));
    destView.Update();
}