2011-01-21 4 views
2

몇 가지 구성 속성이있는 사용자 지정 웹 파트를 만들었습니다. 이러한 속성의 값은 사이트 URL 및 목록 이름입니다. 선택한 사이트의 모든 사이트 이름 및 목록과 함께 드롭 다운 목록을 표시하려고합니다. SharePoint의 속성에 대한 사용자 지정 편집기 구성 요소를 표시하려면 어떻게합니까? 기본 텍스트 편집기를 사용하고 싶지 않습니다.SharePoint의 웹 파트에 대한 사용자 지정 속성 편집기

답변

2

사용자 지정 ToolPart를 만들려고합니다. 여기에 가이드 : 당신이 SPWeb 개체를 허용하도록 GetToolParts 함수를 재정의하고 ToolPart[]

변경에게 toolpart 생성자를 반환해야합니다 귀하는 WebPart 코드에서 기본적으로 http://sharepoint-insight.blogspot.com/2008/10/sharepoint-creating-web-part-with.html

(웹 파트에서에게 SPContext.Current.Web 개체를 전달). 목록의 목록을 얻으려면 toolpart에서 CreateChildControls() 방법으로 드롭 다운 목록을 만들어야합니다. 생성자에서 얻은 SPWeb 객체를 사용하여 각각에 대해 현재 사이트의 모든 목록을 가져올 수 있습니다.

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 이벤트를 사용하는 경우 ListChanged 이벤트를 사용하여 목록 드롭 다운을 채울 수 있습니다.

관련 문제