Pre*_*eti 8 .net c# xml sharepoint-2007
我正在尝试更新/编辑Sharepoint 2007上载文档的属性.
我的代码:
Lists listService = new Lists();
listService.PreAuthenticate = true;
listService.Credentials = new NetworkCredential(username,password);
listService.Url = "http://myserver/SiteName/_vti_bin/lists.asmx";
string strBatch =
"<Method ID='1' Cmd='Update'> "
+ " <Field Name='ID'>3</Field> "
+ " <Field Name='Name'>Preeti</Field> "
+ " </Method> ";
XmlDocument xmlDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch");
elBatch.SetAttribute("OnError", "Continue");
elBatch.SetAttributeNode("UserName", "Preeti");
elBatch.InnerXml = strBatch;
XmlNode ndReturn = listService.UpdateListItems(ListName, elBatch);
MessageBox.Show(ndReturn.OuterXml);
Run Code Online (Sandbox Code Playgroud)
参考 链接.
出错:"未正确安装一个或多个字段类型.转到列表设置页面删除这些字段".
以下解决方案提供自:http ://www.codeproject.com/KB/sharepoint/File_Shunter.aspx
但请注意,正如另一个答案中提到的,该字段的内部名称是必需的。
Web.Config 键
如果您选择这样做,请将以下内容添加到您的应用程序的 Web.config 中(仅作为示例,或者您可以简单地在代码中包含所需的值 [服务器、文档库、用户、域、密码等]) :
<configuration>
<appSettings>
<add key="SharePointServer" value=http://SP Portal/Site/>
<add key="DocLibrary" value="Doclib"/>
<add key="User" value="User"/>
<add key="Domain" value="Domain"/>
<add key="Pwd" value="Pwd"/>
<add key="GlobalSharedPath" value="D:\"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
代码:
Public Function WSSUpdateFile(ByVal sFileName As String, ByVal sSiteDoc As String, ByVal sTestCol As String) As String
Dim sUser As String = ConfigurationManager.AppSettings("User")
Dim sPwd As String = ConfigurationManager.AppSettings("Pwd")
Dim sDomain As String = ConfigurationManager.AppSettings("Domain")
Dim sFileIDinList As String
Dim strBatch As String = ""
sSiteDoc = Replace(sSiteDoc, "%20", " ")
sSiteDoc = Replace(sSiteDoc, "\", "/")
Dim sFinalFilePath As String
Dim sSPURL As String = ConfigurationManager.AppSettings("SharePointServer")
Dim sDocLib As String = ConfigurationManager.AppSettings("DocLibrary")
Try
Dim netAccess As System.Net.NetworkCredential = New System.Net.NetworkCredential(sUser, sPwd, sDomain)
Dim listService As New SPLists.Lists
listService.Url = sSPURL & "/_vti_bin/lists.asmx"
listService.Credentials = netAccess
sFileIDinList = sGetID(listService.Url, sDocLib, sFileName)
If sFileIDinList <> "" Then
sFinalFilePath = sSPURL & "/" & sDocLib & "/" & sFileName
'Now we have FileID so update the list
strBatch = "<Method ID='1' Cmd='Update'>" + _
"<Field Name = 'ID'>" & sFileIDinList & "</Field>" + _
"<Field Name = 'FileRef'>" & sFinalFilePath & "</Field>" + _
"<Field Name = 'TestCol'>" & sTestCol & "</Field>" + _
"</Method>"
Dim xmlDoc = New System.Xml.XmlDocument
Dim elBatch As System.Xml.XmlElement = xmlDoc.createelement("Batch")
elBatch.InnerXml = strBatch
Dim ndreturn As System.Xml.XmlNode = listService.UpdateListItems(sDocLib, elBatch)
End If
Return "TRUE"
Catch ex As Exception
Return ex.Message
End Try
End Function
Private Function sGetID(ByVal sURL As String, ByVal sListGUID As String, ByVal sFileName As String) As String
Dim sUser As String = ConfigurationManager.AppSettings("User")
Dim sPwd As String = ConfigurationManager.AppSettings("Pwd")
Dim sDomain As String = ConfigurationManager.AppSettings("Domain")
Dim netAccess As System.Net.NetworkCredential = New System.Net.NetworkCredential(sUser, sPwd, sDomain)
Dim L As New SPLists.Lists
L.Credentials = netAccess
L.Url = sURL
Dim xmldoc As XmlDocument = New XmlDocument
Dim query As XmlNode = xmldoc.CreateNode(XmlNodeType.Element, "Query", "")
query.InnerXml = "<OrderBy><FieldRef Name='Modified' Ascending='False'></FieldRef></OrderBy>"""
Try
Dim caml As XmlNode = L.GetListItems(sListGUID, Nothing, query, Nothing, "1", Nothing)
Dim id As String = caml.ChildNodes(1).ChildNodes(1).Attributes("ows_ID").Value
Return id
Catch ex As Exception
Return ex.Message
End Try
End Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4428 次 |
| 最近记录: |