【问题标题】:Adding items to a SharePoint list using UpdateList使用 UpdateList 将项目添加到 SharePoint 列表
【发布时间】:2013-05-23 13:54:41
【问题描述】:

我遇到了一个 SharePoint 问题,希望有人能提供帮助。基本上,当我尝试将名为“MigratedChemist”的列添加到名为“WorkCards”的列表中时(方法参数中的 pListName)。无论我尝试什么,在调用 UpdateList 时都会出现 FaultException 错误。我正在使用 SharePoint Web 服务进行连接。我已确认以下内容:

  1. 该列尚不存在,我有权在 SharePoint 中创建它
  2. 与 SharePoint 的连接正确地建立到 /_vti_bin/lists.asmx
  3. 列表名称是正确的,因为我有另一种方法可以从列表中返回项目并且效果很好。
  4. 当程序运行并作为参数传递时,xVersion 和 xId 值设置正确 - 就我而言,我应该只能传递列表名称,而不是 GUID,但是这两种方法都不起作用。李>

我的代码如下:

public static bool AddColumnToList(string pUri, string pListName, string pViewName, string pMaxRecords)
    {

        string version = string.Empty;
        XAttribute xId = null;
        XAttribute xVersion = null;

        try
        {
            XElement listDetails = client.GetList(pListName);
            xVersion = listDetails.Attribute("Version");
            xId = listDetails.Attribute("ID");
        }
        catch { throw; }

        XElement ndNewFields = new XElement ("Fields", "");
        string newXml = "<Method ID='1' Cmd='New'><Field Name='MigratedChemist' Type='Text' DisplayName='MigratedChemist' /></Method></Fields>";

        ndNewFields.Add(newXml);

        XElement result;

        try
        {
            result = client.UpdateList(xId.Value, null, ndNewFields, null, null, xVersion.Value);
        }
        catch (FaultException fe)
        {
        }


        return true;
    }

除此之外,还有人知道如何从 FaultRequest 中获取任何体面的信息吗?目前我收到以下错误消息,它没有用,似乎没有额外的细节。我已经尝试过,因为有些人建议删除错误处理并让程序停止,但这也没有给我任何额外的信息。

{"抛出了 'Microsoft.SharePoint.SoapServer.SoapServerException' 类型的异常。"}

【问题讨论】:

  • SoapServerException 应该有一个 InnerException。除此之外,您的新条目应该包含值,不是吗? MigratedChemist 是唯一需要分配的东西吗?另外,你为什么不直接使用client.UpdateListItems(pListName, ndNewFields)
  • InnerException 为 null....我不想为它设置一个值,因为它是列表中的一个新列,而不是一个新的列表项(如果有意义的话)。新列将是不同的值,具体取决于它所引用的列表项。
  • 您能否在您的问题中添加包含列(及其属性)的表格视图?附言我还在上面编辑了我的评论,请检查。
  • 与 UpdateListItems 的结果相同。我不确定您所说的表格视图是什么意思 - 该列表目前有 30 列左右,这是一个补充。
  • 哦,我还以为你想添加一行,而不是一列。我从未真正尝试过添加新列,抱歉

标签: c# sharepoint


【解决方案1】:

为了将来参考,我已经解决了 SharePoint 更新失败的问题和 FaultException 问题,因此我将其包含在此处以供后人参考:

问题 1 - UpdateList 的问题

这个问题是因为我的 XML 格式错误造成的。当我调用 ndNewFields.Add(newXml) 时,返回的 XML 将 替换为控制字符,如下所示(我添加了一个额外的空格,因为此编辑器会自动转换它们。

现在,我很早就注意到了这一点,但不确定它是否会导致问题。但是使用 XElement.Parse 命令我能够删除这些字符,这解决了问题:

ndNewFields.Add(XElement.Parse (newXml));

问题 2 - SharePoint 错误作为 FaultException 返回的问题

这一直困扰着我很久,所以我很高兴我终于解决了它。我不能把它归功于它,因为我是从另一个页面获取的,但是下面的代码是我获取详细信息的方式。

catch (FaultException fe)
        {
            MessageFault msgFault = fe.CreateMessageFault();
            XmlElement elm = msgFault.GetDetail<XmlElement>();
}

希望这会在将来为某人节省一些挫败感!

安德鲁

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    相关资源
    最近更新 更多