如何将筛选的列表分配给另一个列表

时间:2010-12-29 19:35:33

标签: sharepoint visual-studio-2010 sharepoint-2010 project

我需要将过滤后的列表分配给另一个列表,但是我不知道要过滤的列表结构,只知道过滤器的参数。它只返回一个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,

爱德华多

1 个答案:

答案 0 :(得分:0)

没有方法可以“将列表分配到另一个列表”。您必须了解列表元数据和列表内容(项目)之间的根本区别:

  • SPList代表列表的元数据;
  • SPListItemCollection包含列表的特定 - 其数据

如果您需要将一个列表的(已过滤的)内容复制到另一个列表中,您必须了解两个列表的结构(允许的内容类型,字段)并逐个复制项目(可能的数据转换)

注意:要获取列表的元数据,知道其项目的集合,那么SPListItemCollection.List属性。