none
List Instanz an einem bestimmten Ort Installieren ?!

    Frage

  • Hallo, 

    Gibt es eine Möglichkeit, das ich in einer Solution die List Instanzen explizit in einem Subweb installieren kann, welches mir die selbe Solution erstellt. 

    Stand: 

    Ich habe eine SharePoint 2010 Solution nun möchte ich das es mir beim Deployen der Lösung zuerst via FeatureInstalled eine neue WebSite generiert und dann die Logik + Listen auf diese generierte WebSite installiert wird.   Das ganze möchte ich in einer Solution haben, da ich eine Feature dependency vermeiden möchten.

    Das Feature ist zurzeit auf SiteCollection ebene.

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        SPWeb oWeb = SPContext.Current.Web;
        SPWebTemplate oWebTemplate = oWeb.GetAvailableWebTemplates(LOCALE_ID)[SITE_TEMPLATE];
        SPWebCollection cWebs = oWeb.Webs;
    
        SPWeb tWeb = cWebs[SITE_NAME];
        if (!tWeb.Exists)
        {
            SPWeb xWeb = cWebs.Add(SITE_NAME, SITE_TITLE, SITE_DESCRIPTION, LOCALE_ID, oWebTemplate, false, false);
            xWeb.Dispose();
        }
        tWeb.Dispose();
    }
    Vielen dank !



    Montag, 11. Februar 2013 16:42

Antworten

  • Hi, 

    Vielen dank für die Info habe es nun so umgesetzt:

    public override void FeatureActivated(SPFeatureReceiverProperties properties) { var web = SPContext.Current.Web; var webTemplate = web.GetAvailableWebTemplates(Constants.localID)[Constants.siteTemplate]; var webs = web.Webs; var webNew = webs[Constants.siteName]; if (!webNew.Exists) { var webadd = webs.Add(Constants.siteName, Constants.siteTitle, Constants.siteDescription, Constants.localID, webTemplate, false, false); webadd.Dispose();

    SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite currentSite = new SPSite(SPContext.Current.Site.Url)) { using (SPWeb currentWeb = currentSite.OpenWeb(Constants.siteName)) { currentWeb.AllowUnsafeUpdates = true; currentWeb.Features.Add(new Guid(myGuid), true); currentWeb.AllowUnsafeUpdates = false; } } }); } webNew.Dispose(); }

    Gruss


    • Als Antwort markiert Authentic 81 Freitag, 15. Februar 2013 14:05
    Freitag, 15. Februar 2013 14:03

Alle Antworten

  • Hi,
    da Du vor dem xWeb.Dispose den Verweis auf das neu erstellte SubWeb hats, kannst Du an dieser Stelle auch die ListInstance per Code erstellen und hinzufügen. Oder due nutzt ein Webfeature, welches die Listeninstanz erzeugt und welches an dieser Stelle aktiviert wird.
     
    --
    Peter Fleischer
    Dienstag, 12. Februar 2013 09:17
  • Hi, 

    Vielen dank für die Info habe es nun so umgesetzt:

    public override void FeatureActivated(SPFeatureReceiverProperties properties) { var web = SPContext.Current.Web; var webTemplate = web.GetAvailableWebTemplates(Constants.localID)[Constants.siteTemplate]; var webs = web.Webs; var webNew = webs[Constants.siteName]; if (!webNew.Exists) { var webadd = webs.Add(Constants.siteName, Constants.siteTitle, Constants.siteDescription, Constants.localID, webTemplate, false, false); webadd.Dispose();

    SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite currentSite = new SPSite(SPContext.Current.Site.Url)) { using (SPWeb currentWeb = currentSite.OpenWeb(Constants.siteName)) { currentWeb.AllowUnsafeUpdates = true; currentWeb.Features.Add(new Guid(myGuid), true); currentWeb.AllowUnsafeUpdates = false; } } }); } webNew.Dispose(); }

    Gruss


    • Als Antwort markiert Authentic 81 Freitag, 15. Februar 2013 14:05
    Freitag, 15. Februar 2013 14:03