.net sharepoint-2010 web-parts sandbox

.net - Cómo crear una propiedad editable en un SharePoint 2010 Sandboxed Visual WebPart



sharepoint-2010 web-parts (1)

Acabo de pasar por ese proceso y así es como logré que se ejecutara bajo una solución de espacio aislado y también un sitio 365, este es el código de muestra completo:

Nota: Estoy usando Visual WebPart (SandBoxed) en SharePoint Power Tools para Visual Studio

ToolPartTest.ascx:

<h3>Selected List</h3> <dd><asp:Literal runat="server" ID="list" /></dd>

TooLPartTest.ascx.cs:

[WebBrowsable(true), Personalizable(true)] public string ListName { get; set; } protected override void OnInit(EventArgs e) { base.OnInit(e); InitializeControl(); } protected void Page_Load(object sender, EventArgs e) { } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); list.Text = ListName ?? "(None)"; } public override EditorPartCollection CreateEditorParts() { return new EditorPartCollection(base.CreateEditorParts(), new[] { new CustomEditorPart { ID = ID + "_editorPart" } } ); }

ToolPart.cs

public class CustomEditorPart : EditorPart { private DropDownList _list; protected override void OnInit(EventArgs e) { base.OnInit(e); _list = new DropDownList(); _list.AppendDataBoundItems = true; _list.Items.Add(""); _list.DataTextField = "Title"; _list.DataValueField = "Title"; _list.DataSource = SPContext.Current.Site.RootWeb.Lists; _list.DataBind(); Controls.Add(new LiteralControl("List: ")); Controls.Add(_list); } public override bool ApplyChanges() { EnsureChildControls(); if (!string.IsNullOrEmpty(_list.SelectedValue)) ((ToolPartTest)WebPartToEdit).ListName = _list.SelectedValue; return true; } public override void SyncChanges() { EnsureChildControls(); var webpart = ((ToolPartTest)WebPartToEdit); _list.SelectedValue = webpart.ListName; } }

Estoy desarrollando un sitio web visual de espacio aislado utilizando SharePoint 2010 en Visual Studio 2010 con las herramientas de SharePoint instaladas. El elemento web se implementa y funciona como se espera, excepto que las propiedades no son editables. Creo que el problema principal es que WebPartStorageAttribute no está disponible en el entorno limitado, pero no se han podido encontrar instrucciones sobre cómo crear un elemento web de espacio aislado con propiedades editables. ¿Esto es posible?

[ToolboxItem(false)] [XmlRoot(Namespace="MyNamespace")] public partial class MyWebPart: System.Web.UI.WebControls.WebParts.WebPart { const string defaultStartTime = "00:30:00"; private string _startTime = "00:30:00"; [Browsable(true)] [WebBrowsable(true)] [Category("Timer")] [Description("Start time to use if the user has not set a different one.")] [XmlElement(ElementName="StartTime")] [DefaultValue(defaultStartTime)] [FriendlyName("Start Time")] public string StartTime { get { return _startTime; } set { _startTime = value; } } ...

¿Falta algo en el código anterior? ¿Es posible crear un elemento web de espacio aislado editable y, de ser así, cómo se hace?