2011-04-19 11 views
3

SharePoint PowerToolsをインストールした状態で、Visual Studio 2010でSharePoint 2010を使用してサンドボックスビジュアルWebパーツを開発しています。 Webパーツは、プロパティが編集可能でないことを除いて、期待どおりに展開して動作します。 WebPartStorageAttributeはサンドボックスでは使用できませんが、編集可能なプロパティでサンドボックス化されたWebパーツを作成する方法についてのガイダンスは見つかりませんでした。これも可能ですか?SharePoint 2010サンドボックスビジュアルWebPartで編集可能なプロパティを作成する方法

[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; 
     } 
    } 
... 

上記のコードには何かがありますか?編集可能なサンドボックス化されたWebパーツを作成することは可能ですか?そうであれば、どのようにして完了ですか?

答えて

2

私はちょうどそのプロセスを経て、これは私はそれがサンドボックスソリューションとも365サイトの下で実行するために、管理方法、これは全体のサンプルコードです:

注:私は、Visual Webパーツを使用していますVisual Studio用のSharePointパワーツール内(サンドボックス)

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; 

    } 
} 
+0

だから私も、単純なテキストボックスのためならば、toolpartを作成する必要がありますか? –

+1

私はあなたがそうは思わない、[WebBrowsable(true)、Personalizable(true)]がプロパティ上にあることを確認するだけで、toolpartのMiscellaneousセクションに表示されるはずです。 –

+0

ああ!あなたが正しい!私は実際にそれをパーソナライズ可能にする必要があると私はつまらない。私はそれをパーソナライズ可能にすることに取り組んでいますが、Sharedスコープでのみ、これは私が思うところです。 –

関連する問題