2010-02-10 6 views
1

Les contrôles Sharepoint nécessitent que SPContext.current.site/web fonctionne, mais j'ouvre de nombreux sites en utilisant site = new spsite (siteID); et je veux utiliser les contrôles. Avez-vous une idée ou une classe disponible pour utiliser les contrôles asp.net dans sharepoint?Comment utiliser les contrôles dans sharepoint sans utiliser le spcontext.current

+0

Pourriez-vous fournir plus d'informations, par exemple comment créez-vous des objets de contrôle et quelles exceptions recevez-vous en essayant de les utiliser? Merci. –

+0

ok, je vais écrire dans la zone de réponses parce que ma réponse est trop grande pour s'adapter ici – Manale

Répondre

0
//open site and web 
sSiteID = Request.QueryString["siteID"]; 
sWebID = Request.QueryString["parentWebID"]; 
site = new SPSite(new Guid(sSiteID)); 
web = site.OpenWeb(new Guid(sWebID)); 
//show the properties of the list in the edit form 
(...) 
if ((list.AllowContentTypes == true) && (list.ContentTypesEnabled == true)) 
{ 
    (...) 
    SharePointWebControls oSharePointWebControls = new SharePointWebControls(); 

    cntrl = oSharePointWebControls.GetSharePointControls(field, list, item, SPControlMode.Edit, ""); 
} 

public Control GetSharePointControls(SPField field, SPList list, SPListItem item, SPControlMode mode, string strType) 
{ 
    switch (field.FieldRenderingControl.ToString()) 
    { 
     case "Microsoft.SharePoint.WebControls.TextField": 
      return CreateTextFieldControl(field, list, item, mode); 
    } 
} 

#region Create SharePoint Controls 
private static Control CreateTextFieldControl(SPField field, SPList list, SPListItem item, SPControlMode mode) 
{ 
    TextField tf = new TextField(); 
    //tf.EnableViewState=false; 
    tf.ListId = list.ID; 
    if (item != null) 
    { 
     tf.ItemId = item.ID; 
    } 
    tf.FieldName = field.Title; 
    tf.ID = "Field_" + field.Id; 
    //tf.CssClass = "spsControl"; 
    tf.ControlMode = mode; 
    //check if the field has a default value 
    if (field.DefaultValue != "null" && field.DefaultValue != null) 
    { 
     tf.Text = field.DefaultValue.ToString(); 
    } 
    try 
    { 
     RequiredFieldValidator cntrlValidator = ((RequiredFieldValidator)tf.Controls[0].Controls[3]); 
    } 
    catch (Exception ex) 
    { 
    } 

    return tf; 
} 

tous les contrôles de sharepoint J'UTILISE travaillent et tf est retourné correctement, mais quand je ne suis pas dans le site actuel ou sur le Web en cours cette exception se sont produites: InvalidArgumentException dans le contrôle. Je suppose que ces contrôles ne fonctionnent pas en dehors du site actuel ou du Web, et je dois utiliser le contrôle asp.net? Est-ce exact ou existe-t-il une autre solution? Merci d'avance ...

+0

pouvez-vous formater le code et le déplacer à la question elle-même? Vous devez essentiellement simuler le spcontext et charger l'autre collection de sitecollection. –

0

Faux Spcontext est la solution à votre problème. Google it, ça pourrait peut-être vous aider.

+0

Cela m'a aidé. THX – Manale

Questions connexes