我正在嘗試使用下面的函數重新排列列表字段。但由於某種原因,在執行此功能後,當我去檢查List Settings
中的字段順序時,它似乎沒有改變。在SharePoint 2010中重新排序列表字段
我得到以下爲ProcessBatchData
結果:
<Result ID="0,REORDERFIELDS" Code="-2130575323">
<ErrorText>
Fields have been added or removed since you began this editing session. Please refresh your view and try again
</ErrorText>
</Result>
缺少什麼我在這裏?
/// <summary>
/// Reorders the share point list fields.
/// </summary>
/// <param name="spWeb">The sp web.</param>
/// <param name="spList">The sp list.</param>
/// <param name="orderedFields">The ordered fields.</param>
private static void ReorderSharePointListFields(SPWeb spWeb, SPList spList, IEnumerable<string> orderedFields)
{
var stringBuilder = new StringBuilder();
using (var xmlTextWriter = new XmlTextWriter(new StringWriter(stringBuilder)))
{
xmlTextWriter.Formatting = Formatting.Indented;
xmlTextWriter.WriteStartElement("Fields");
foreach (string orderedField in orderedFields)
{
xmlTextWriter.WriteStartElement("Field");
xmlTextWriter.WriteAttributeString("Name", orderedField);
xmlTextWriter.WriteEndElement();
}
xmlTextWriter.WriteEndElement();
xmlTextWriter.Flush();
const string rpcMethod =
@"<?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>";
SPList list = spWeb.Lists[spList.ID];
string rpcCall = string.Format(rpcMethod, list.ID, SPHttpUtility.HtmlEncode(stringBuilder.ToString()),
list.Version);
spWeb.ProcessBatchData(rpcCall);
}
}
所以基本上你使用的是AlexanderBrütt的這個功能:http://www.alexbruett.net/?p=48?直接與他聯繫並尋求幫助會更容易。在任何情況下:您是否嘗試對**視圖**中的字段進行重新排序?它是否需要通過RPC調用完成?爲什麼不走簡單的路徑並通過'ViewFields'改變視圖本身的順序? –