使用客户端对象模型添加列表项



我目前正在开发一个Windows应用程序,用于将数据从旧系统迁移到SharePoint列表中。

为此,我正在访问客户端对象模型并使用它来创建新的列表项并更新相关字段值。

我遇到的问题是有些字段值会更新,而有些则不会。 似乎某些"选择"字段没有保留传递的值...甚至"标题"字段也不会保留该值。 调查显示,有问题的"选项"字段是单选按钮和多个值选项的组合。

我使用的代码如下。 谁能阐明为什么会出现这些问题?

谢谢。

法典:

                strDtls = Split(strData, "~^")
                Dim inf As New ListItemCreationInformation()
                Dim itmProfile As ListItem = lstProfile.AddItem(inf)
                itmProfile.Update()
                ctx.ExecuteQuery()
                strID = itmProfile.ID.ToString
                itmProfile.Item("Title") = strDtls(0)
                itmProfile.Item("Category") = strDtls(1)
                itmProfile.Item("Jurisdiction") = "Federal"
                itmProfile.Item("Other_x0020_Jurisdiction") = strDtls(3)
                itmProfile.Item("Practice_x0020_Group") = "Banking & Finance"
                dteTmp = Date.ParseExact(strDtls(5),"dd/MM/yyyy",System.Globalization.CultureInfo.InvariantCulture)
                itmProfile.Item("Last_x0020_Reviewed_x0020_Date") = dteTmp
                itmProfile.Item("Format") = "Tab through"
                itmProfile.Item("Format_x0020_specification") = strDtls(7)
                If strDtls(8) = "" then
                    usrTmp = oWeb.EnsureUser("ORG55276")
                else
                    usrTmp = oWeb.EnsureUser("ORG44778")
                End If
                ctx.Load(usrTmp)
                ctx.ExecuteQuery()
                usrVal1 = New FieldUserValue()
                usrVal1.LookupId = usrTmp.Id
                itmProfile.Item("Author0") = usrVal1
                If strDtls(9) = "" then
                    usrTmp2 = oWeb.EnsureUser("ORG55276")
                else
                    usrTmp2 = oWeb.EnsureUser("ORG" + strDtls(9))
                End If
                ctx.Load(usrTmp2)
                ctx.ExecuteQuery()
                usrVal2 = New FieldUserValue()
                usrVal2.LookupId = usrTmp2.Id
                itmProfile.Item("Partner_x0020_Responsible") = usrVal2
                itmProfile.Item("NewColumn1") = strDtls(10)
                itmProfile.Item("Engagement_x0020_type") = strDtls(11)
                itmProfile.Item("NewColumn10") = strDtls(12)
                itmProfile.Item("Audit_x0020_frequency") = strDtls(13)
                itmProfile.Item("Royalty") = strDtls(14)
                itmProfile.Item("Audit_x0020_frequency_x0020_appr") = strDtls(15)
                dteTmp = Date.ParseExact(strDtls(16),"dd/MM/yyyy",System.Globalization.CultureInfo.InvariantCulture)
                itmProfile.Item("Next_x0020_review_x0020_due") = dteTmp
                itmProfile.Item("Archive") = strDtls(17)
                itmProfile.Item("Drafted_x0020_by") = strDtls(18)
                itmProfile.Item("Partner_x0020_signoff") = strDtls(19)
                itmProfile.Item("Style_x0020_guide_x0020_complian") = strDtls(20)
                itmProfile.Item("Client") = strDtls(21)
                itmProfile.Item("Form_x0020_Details") = strDtls(22)
                itmProfile.Item("Description") = strDtls(24)
                itmProfile.Item("Reference") = strDtls(25)
                itmProfile.Update()
                ctx.Load(itmProfile)
                ctx.ExecuteQuery()

我最终通过研究在 SP 服务器本身上运行应用程序时使用服务器对象模型来解决这个问题。

它涉及使用 SPFarm.Local、SPFarm.Services、SPWebApplication 访问服务器,然后访问站点。

相关内容

  • 没有找到相关文章

最新更新