我在列表和视图中添加了一个新字段。要将该字段添加到视图,我正在使用此代码:
view.ViewFields.Add("My New Field");
然而,这只是在视图的最后处理。如何将字段添加到特定列,或重新排列字段顺序? view.ViewFields是一个SPViewFieldCollection对象,它继承自SPBaseCollection,并且没有可用的Insert / Reverse / Sort / RemoveAt方法。
答案 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();
}