如何在 SharePoint 2010 沙盒可视 WebPart 上创建可编辑属性
Posted
技术标签:
【中文标题】如何在 SharePoint 2010 沙盒可视 WebPart 上创建可编辑属性【英文标题】:How to create a editable property on a SharePoint 2010 Sandboxed Visual WebPart 【发布时间】:2011-08-08 16:39:57 【问题描述】:我正在使用安装了 SharePoint powertools 的 Visual Studio 2010 中的 SharePoint 2010 开发沙盒可视化 Web 部件。 Web 部件按预期进行部署和工作,但属性不可编辑。我认为核心问题是 WebPartStorageAttribute 在沙盒中不可用,但无法找到有关如何创建具有可编辑属性的沙盒 Web 部件的指导。这甚至可能吗?
[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 部件,如果可以,它是如何完成的?
【问题讨论】:
【参考方案1】:我刚刚经历了这个过程,这就是我设法让它在沙盒解决方案和 365 网站下运行的方式,这是整个示例代码:
注意:我在 Visual Studio 的 SharePoint Power Tools 中使用 Visual WebPart(沙盒)
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;
【讨论】:
所以我必须创建一个工具部件,即使只是一个简单的文本框? 我不认为你这样做,只要确保 [WebBrowsable(true), Personalizable(true)] 在属性上,它应该出现在工具部分的杂项部分。 啊!你说得对!我并不认为实际上我确实需要它是可个性化的。我将努力使其可个性化,但仅限于共享范围内,我认为这是我所追求的。以上是关于如何在 SharePoint 2010 沙盒可视 WebPart 上创建可编辑属性的主要内容,如果未能解决你的问题,请参考以下文章
Sharepoint 2010添加,编辑,删除表单替换为自定义可视Web部件
在 sharepoint 中创建可视 Web 部件连接到列表
如何在 Sharepoint 2010 中使用 HTTP 处理程序发出 jQuery AJAX 请求?
如何在2010年的SharePoint添加的WebPartZone编程的C#?