2011-01-21 23 views
2

いくつかの構成プロパティを持つカスタムWebPartを作成しました。これらのプロパティの値は、サイトURLとリスト名です。選択したサイトのすべてのサイト名とリストを含むドロップダウンリストを表示したい。 SharePointでプロパティのカスタムエディタコンポーネントを表示するにはどうすればよいですか?私はデフォルトのテキストエディタを取得したくありません。SharePointのWebパーツのカスタムプロパティエディタ

答えて

2

カスタムToolPartを作成することをお勧めします。ここではガイドである:http://sharepoint-insight.blogspot.com/2008/10/sharepoint-creating-web-part-with.html

は、基本的には、あなたのWebパーツのコードでは、あなたは(あなたのWebパーツからそれをSPContext.Current.Webオブジェクトを渡すSPWebオブジェクトを受け入れるようにtoolpartコンストラクタを変更GetToolParts機能を無効にし、ToolPart[]

を返却する必要があります。 )。リストのリストを取得するには、toolpartのCreateChildControls()メソッド内にドロップダウンリストを作成する必要があります。コンストラクタから取得したSPWebオブジェクトを使用すると、それぞれを使用して現在のサイトのすべてのリストを取得できます。あなたのWebパーツでそう

は、次の操作を行います。

public override ToolPart[] GetToolParts() 
{ 
    ToolPart[] tps = new ToolPart[3]; 

    WebPartToolPart wptp = new WebPartToolPart(); 
    CustomPropertyToolPart cptp = new CustomPropertyToolPart(); 
    tps(0) = cptp; 
    tps(1) = wptp; 
    tps(2) = new ListSelectionToolPart(SPContext.Current.Web, "List Settings"); 

    return tps; 
} 

private string _TargetListGUID; 
[Personalizable(PersonalizationScope.Shared)] 
[WebBrowsable(false)] 
[WebDisplayName("Target List GUID")] 
[WebDescription("GUID of the Target List")] 
[SPWebCategoryName("Internal")] 
public string TargetListGUID { 
    get { return _TargetListGUID; } 
    set { _TargetListGUID = value; } 
} 

は次のようにクラスを追加します。

public class ListSelectionToolPart : WebPartPages.ToolPart 
{ 
    private SPWeb _web; 
    protected DropDownList ddlLists; 

    public New(SPWeb Web, string ToolTitle) 
    { 
    _web = System.Web; 
    this.Title = ToolTitle; 
    } 

    protected override void CreateChildControls() 
    { 
     Literal litLists = new Literal { Text = "<b>List:</b><br />" }; 
     ddlLists = new DropDownList { 
     AutoPostBack = true, 
     ID = "ddlLists" 
     }; 
     ddlLists.Style.Add("width", "100%"); 
     foreach (SPList list in _web.Lists) 
     { 
     ddlLists.Items.Add(new ListItem(list.Title, list.ID.ToString())); 
     } 
     this.Controls.Add(litLists); 
     this.Controls.Add(ddlLists); 
    } 

    public override void ApplyChanges() 
    { 
    (this.ParentToolPane.SelectedWebPart as MyWebPart).TargetListGUID = ddlLists.SelectedValue; 
    } 

} 

上記のコードは、あなたのWebPartの名前はMyWebPartで、TargetListGUIDプロパティがあることを前提としてい。サイト選択を追加するには、toolpartの中で同じことをやり直すことができます(別のドロップダウンリストを追加する)。その上でSelectionChangedイベントを使用する場合、それを使用してリストのドロップダウンを設定することができます。

関連する問題