0

我正在嘗試使用下面的函數重新排列列表字段。但由於某種原因,在執行此功能後,當我去檢查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); 
    } 
} 
+0

所以基本上你使用的是AlexanderBrütt的這個功能:http://www.alexbruett.net/?p=48?直接與他聯繫並尋求幫助會更容易。在任何情況下:您是否嘗試對**視圖**中的字段進行重新排序?它是否需要通過RPC調用完成?爲什麼不走簡單的路徑並通過'ViewFields'改變視圖本身的順序? –

回答

2

基於其他的例子,我可以找到:

我用你的代碼看到的唯一區別是,以前你ProcessBatchData電話,你沒有:

spWeb.AllowUnsafeUpdates = true; 

如果添加的是沒有幫助,我會建議捕獲從ProcessBatchData串組輸出,找出究竟是什麼出了問題。

+0

我試過'spWeb.AllowUnsafeUpdates = true;'沒有影響任何東西。所以我把它拿走了。 – Moon

+0

當您更改代碼以捕獲ProcessBatchData返回值時,請將其放回原處。如果您有返回值,請將其添加到上面的問題中。 –

+0

更新了問題。 – Moon