【发布时间】:2012-08-03 23:24:36
【问题描述】:
我正在使用 VB.net 设计一个 Windows 窗体应用程序。我试图让应用程序返回特定 SharePoint 列表中的行数。当我删除 ndQuery.InnerXml 代码时,一切正常;但是,我想在获得计数之前过滤列表。我要过滤的两列是“Assigned Employee”和“status”。我在 Stack(SharePoint SoapServerException calling GetListItems web service) 上查看了许多不同的帖子,但我的异常与查询有关。 soapserverException的详细信息是:“一个或多个字段类型未正确安装。进入列表设置页面删除这些字段:0x81020014。”
我尝试进入关系页面,但无法浏览:
(url)/Relationships%20List/allitems.aspx
任何人都可以看到查询代码有问题吗?
Imports System
Imports System.IO
Imports System.Net
Imports System.Xml
Imports <xmlns="rs">
Public Class Form1
Dim i As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim listService As New getListItems.Lists
listService.Credentials = CredentialCache.DefaultCredentials
listService.Url = "http://(servername)/_vti_bin/Lists.asmx"
Dim xmlDoc = New System.Xml.XmlDocument()
Dim ndQuery As XmlNode =
xmlDoc.CreateNode(XmlNodeType.Element, "Query", "")
Dim ndViewFields As XmlNode =
xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "")
Dim ndQueryOptions As XmlNode =
xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "")
ndQueryOptions.InnerXml =
"<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>"
ndViewFields.InnerXml = "<FieldRef Name='Assigned Employee'/><FieldRef Name='Status'/>"
ndQuery.InnerXml = "<Where><And><Contains><FieldRef Name ='Assigned Employee'/><Value Type='Text'>Engineer</Value></Contains><Contains><FieldRef Name='Status'/><Value Type='Text'>New</Value></Contains></And></Where>"
Try
Dim ndListItems As XmlNode =
listService.GetListItems("Requests", Nothing, ndQuery, _
ndViewFields, Nothing, ndQueryOptions, Nothing)
Dim n1 As XmlNode = ndListItems.Item("rs:data")
Dim a As String = n1.Attributes("ItemCount").InnerText
'Attempted For each loop, but not needed:
'Dim listItemCount As String
'Dim innerXML = New System.Xml.XmlDocument
'innerXML.LoadXml(ndListItems.InnerXml)
'Dim rows As XmlNodeList = innerXML.GetElementsByTagName("rs:data")
'For Each (XmlNode Attribute In rows)
'Next
Label1.Text = a
Catch ex As System.Web.Services.Protocols.SoapException
Label1.Text = ("Message:" + ControlChars.Lf + ex.Message +
ControlChars.Lf +
"Detail:" + ControlChars.Lf + ex.Detail.InnerText +
ControlChars.Lf +
"StackTrace:" + ControlChars.Lf + ex.StackTrace)
End Try
End Sub
End Class
【问题讨论】:
-
不确定是否是问题中的拼写错误,但第二个
<FieldRef>应该有一个大写的“R”。 -
@AquilaSands 是的,它是一种类型,我已经改变了它。谢谢。
-
如果您使用列表的 guid 而不是名称,它是否有效?如果不是,错误是否不同?
-
使用 ID 或列表名称时同样的错误
-
您能否尝试一次使用一个字段的查询来尝试缩小问题范围
标签: vb.net web-services sharepoint sharepoint-2007