【问题标题】:How do I create a KPI list programmatically in SharePoint?如何在 SharePoint 中以编程方式创建 KPI 列表?
【发布时间】:2010-04-13 21:33:54
【问题描述】:

我希望能够通过对象模型在我的 MOSS 2007 安装上创建 KPI 列表。这可能吗?

【问题讨论】:

    标签: sharepoint kpi


    【解决方案1】:
    using (SPWeb web1 = properties.Feature.Parent as SPWeb)
    {
        using (SPSite objSite = new SPSite(web1.Site.ID))                             
        {
            using (SPWeb web = objSite.OpenWeb(web1.ID))
            {
                SPListTemplate template = null;
                foreach (SPListTemplate t in web.ListTemplates)
                {
                    if (t.Type.ToString() == "432")
                    {
                        template = t;
                        break;
                    }
                }
                Guid gG = Guid.Empty;
                SPList list = null;
                string sListTitle = "Status List";
                SPSecurity.RunWithElevatedPrivileges(delegate
                {
                    try
                    {
                        web.AllowUnsafeUpdates = true;
                        gG = web.Lists.Add(sListTitle, sListTitle, template);
                        list = web.Lists[gG];
                    }
                    catch
                    {
                        // exists
                        list = web.Lists[sListTitle];
                    }
                    SPContentType ct =
                      list.ContentTypes["SharePoint List based Status Indicator"];
    
                    //declare each item which u want to insert in the kpi list
                    SPListItem item1 = list.Items.Add();
    
                    SPFieldUrlValue value1 = new SPFieldUrlValue();
    
                    item1["ContentTypeId"] = ct.Id;
                    item1.SystemUpdate();
                    item1["Title"] = "Project Specific Doc.Lib.Rating";
                    value1.Url = web.Url + "/Lists/Project Specific Documents";
                    item1["DataSource"] = value1;
                    item1["Indicator Goal Threshold"] = "3";
                    item1["Indicator Warning Threshold"] = "3";
                    item1["Value Expression"] =
                      "Average;Average_x0020_Rating:Number";
                    item1.SystemUpdate();
                }
            }
        }
    

    average为计算值,列为Average_x0020_Rating

    【讨论】:

      【解决方案2】:

      http://alonsorobles.com/2010/03/17/important-custom-sharepoint-list-template-notes/

      我发现状态指示器(KPI 列表)的模板 ID 是 432。Google 可以找到一些有关创建新列表的信息。我需要了解我可以在此列表中设置哪些属性。

      【讨论】:

        【解决方案3】:

        这对我有用:

           private void CreateKPIDocumentLibrary(List<PageStructure> list)
            {
                SPListTemplate kpi = null;
                foreach (SPListTemplate t in web.ListTemplates)
                {
                    if (t.Type.ToString() == "432")
                    {
                        kpi = t;
                        break;
                    }
                }
        
                foreach (PageStructure st in list)
                {
                    bool find = false;
                    string[] periodType = st.tag.Split('_');
                    string name = periodType[0] + "-" + st.effdate + "-" + st.template;
                    SPListCollection lstCol = site.OpenWeb().GetListsOfType(SPBaseType.GenericList);
                    foreach (SPList l in lstCol)
                    {
                        string title = l.Title;
                        if (title == name)
                        {
                            find = true;
                            break;
                        }
                    }
        
                    if (find == false)
                    {
                        Guid docLibID = web.Lists.Add(name, "", kpi);
                    }
        
                    SPList itemList = web.Lists[name];
                    SPListItem item = itemList.Items.Add();
                    SPFieldUrlValue value = new SPFieldUrlValue();
                    item["Title"] = st.tag;
                    value.Url = st.docUrl;
                    item["DetailLink"] = st.url;
                    item["DataSource"] = value;
                    item["Indicator Goal Threshold"] = "2";
                    item["Indicator Warning Threshold"] = "1";
                    item["View Name"] = "All Documents";
                    item.SystemUpdate();
                    web.Update();
                    KpiObject kp = new KpiObject(name, SPContext.Current.Site.Url + itemList.DefaultViewUrl);
                    this.kpiList.Add(kp);
                }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-07
          • 1970-01-01
          • 2018-07-02
          相关资源
          最近更新 更多