SharePoint WebService:获取列表项导航URL

时间:2011-01-09 13:09:56

标签: c# web-services sharepoint url

我正在使用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
                                }
                    }
                }

任何帮助?

1 个答案:

答案 0 :(得分:2)

ows_EncodedAbsUrl有效吗?

innerNode.Attributes [ “ows_EncodedAbsUrl”]。值

http://blogs.msdn.com/b/sowmyancs/archive/2007/09/15/how-to-download-files-from-a-sharepoint-document-library-remotely-via-lists-asmx-webservice-sps-2003-moss-2007.aspx

修改

好的,这适用于文档库,但对于列表,我认为您将不得不构建URL。

首先,您需要加载列表以获取其URL。 (只在for循环之外执行此操作)

XmlNode ndList = SPListWebService.GetList("Driving License");

然后每行构建网址。

string clickurl = url + ndList.Attributes["RootFolder"].Value + "/DispForm.aspx?ID=" + innerNode.Attributes["ows_ID"].Value

检查是否有足够的'/'