SharePoint WebService: URL-адрес перехода к элементу списка - PullRequest
2 голосов
/ 09 января 2011

Я использую метод веб-службы sharepoint (GetListItems), чтобы получить данные некоторых полей для элементов списка, теперь в дополнение к информации, которую я получаю для элемента Мне нужен его прямой URL , поэтому я может дать пользователю дополнительную ссылку, по которой можно щелкнуть, чтобы плавно перейти к этому элементу на веб-сайте 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 Ответ

2 голосов
/ 10 января 2011

Работает ли 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");

Затем создайте URL для каждой строки.

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

Проверьте, достаточно ли '/' s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...