我正在使用sharepoint的网络服务(GetListItems)方法来获取列表项目的一些字段数据,此外还有我为项目检索的信息我需要其直接网址,所以我可以为用户提供一个可选的单击链接,以便顺利导航到sharepoint网站中的该项目
这是我的代码,它获取项目的数据
XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
XmlNode ndViewFields =
xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
XmlNode ndQueryOptions =
xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");
var cc = new CredentialCache();
cc.Add(
new Uri(url),
"NTLM",
new NetworkCredential(username, password, domain));
SPListWebService.Credentials = cc;
SPListWebService.Url = url + "/_vti_bin/Lists.asmx";
//Query Options Node
ndQueryOptions.InnerXml =
"<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" +
"<DateInUtc>TRUE</DateInUtc>";
//Qyery node
foreach (DataRow row in view.Rows)
{
string v = row[ffdmn].ToString();
ndQuery.InnerXml = string.Format("<Where><Eq><FieldRef Name='{0}'/>" +
"<Value Type='Text'>{1}</Value></Eq></Where>", sfdmname, v);
XmlNode ndListItems =
SPListWebService.GetListItems(listName, null, ndQuery,
ndViewFields, null, ndQueryOptions, null);
foreach (XmlNode node in ndListItems.ChildNodes)
{
if (node.Name == "rs:data")
foreach (XmlNode innerNode in node.ChildNodes)
if (innerNode.Name == "z:row")
{
//I do some logic here to get the targeted fields
}
}
}
任何帮助?
答案 0 :(得分:2)
ows_EncodedAbsUrl有效吗?
innerNode.Attributes [ “ows_EncodedAbsUrl”]。值
修改强>
好的,这适用于文档库,但对于列表,我认为您将不得不构建URL。
首先,您需要加载列表以获取其URL。 (只在for循环之外执行此操作)
XmlNode ndList = SPListWebService.GetList("Driving License");
然后每行构建网址。
string clickurl = url + ndList.Attributes["RootFolder"].Value + "/DispForm.aspx?ID=" + innerNode.Attributes["ows_ID"].Value
检查是否有足够的'/'