Как назначить отфильтрованный список другому списку - PullRequest
0 голосов
/ 29 декабря 2010

Мне нужно назначить отфильтрованный список другому списку, однако я не знаю структуру списка, которая будет фильтровать, просто знаю параметр для фильтра.Он только возвращает SPListItemCollection, и мне нужно вернуть SPList.

Ниже следует метод, при котором захватывается список, мне нужно вернуть список, но отфильтрованный по запросу:

/// <summary>
        /// reads the list to display
        /// </summary>
        /// <returns></returns>
        public SPList GetListFromProjectWorkSpace()
        {
            SPList list = null;

            Guid projUID = _helper.GetProjUID();
            if (projUID == Guid.Empty)
            {
                return list;
            }

            // read project data
            IProjectWssInfoDataSet dataset = _service.ReadWssData(projUID);
            if (dataset.ProjWssInfo.Count == 0)
            {
                return list;
            }

            // get workspace name and url
            string workspaceName = dataset.ProjWssInfo[0].WorkspaceName;
            string workspaceUrl = dataset.ProjWssInfo[0].WorkspaceUrl;


            SPSecurity.RunWithElevatedPrivileges(()=>
            {
                using (SPSite site = new SPSite(workspaceUrl))
                {

                    for (int i = 0; i < site.AllWebs.Count; i++)
                        {
                            if (!site.AllWebs[i].ServerRelativeUrl.Contains(workspaceName))
                            {
                                continue;
                            }

                            try
                            {
                                list = site.AllWebs[i].Lists[SelectedList];

                            }
                            catch
                            {
                            }


                        }

                        SPQuery query = new SPQuery();

                        query.Query = @"<Where>
                                          <Contains>
                                             <FieldRef Name='LinkFilenameNoMenu' />
                                             <Value Type='Computed'>work</Value>
                                          </Contains>
                                       </Where>";



                        SPListItemCollection  itens = list.Items.List.GetItems(query);

                // I need help here




                }
            });


            return list;
        }

att

1007 * Эдуардо

1 Ответ

0 голосов
/ 29 декабря 2010

Нет способа «назначить список другому списку».Вы должны понимать фундаментальное различие между списком метаданные и списком содержимое (элементы):

  • SPList представляет метаданные списка;
  • SPListItemCollection содержит конкретные элементы списка - его данные .

В случае необходимости копирования(отфильтрованное) содержимое одного списка в другой список, вы должны понимать структуры (разрешенные типы содержимого, поля) обоих списков и копировать элементы один за другим (с возможными преобразованиями данных).

Примечание:чтобы получить метаданные списка, зная коллекцию его элементов, существует свойство SPListItemCollection.List.

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