自定义视觉对象 Web 部件属性共享点

本文关键字:属性 共享 视觉 对象 Web 自定义 | 更新日期: 2023-09-27 18:36:08

我在Visual Studio 2012中创建可视Web部件属性时遇到问题。我被推荐给 http://msdn.microsoft.com/en-us/library/ee231551.aspx,但后来没有成功。

在 Web 部件中查找并找到 .ascx、ascx.cs 和 ascx.g.cs

我一直在尝试查找 webpart.cs 文件,但后来我无法找到。有没有办法我可以创建它,或者我找错了地方......

自定义视觉对象 Web 部件属性共享点

在VS 2012中创建的Visual Web Part中没有Web部件.cs文件。您可以将 Web 部件属性添加到 ascx.cs 文件中,例如

     [WebBrowsable(true),
     WebDisplayName("Page Title"),
     WebDescription("Title displayed on the page"),
     Category("Test Properties"),
     Personalizable(PersonalizationScope.Shared)]
    public string PageTitle
    {
        get
        {
            return _pageTitle;
        }
        set
        {
            _pageTitle = value;
        }
    }

可视 Web 部件不同于代码位于ascx.cs文件中asp.net Web 部件,若要添加属性,应在 Web 部件中的类定义下方添加以下代码

[WebBrowsable(true),
WebDisplayName("Project ID"),
WebDescription("Enter Project Number"),
Personalizable(PersonalizationScope.Shared),
Category("Project Settings")]
public string ProjectID { get; set; }

有关更多详细信息,请查看详细步骤 在 SharePoint 中使用默认值创建自定义可视 Web 部件属性

内容查询 Web 部件 (CQWP) 的解决方案:工具部件。工具部分.cs公共类内容查询工具部分 : 工具部分 { 私有下拉列表 ddlMainXslTemplate; 私有内容查询网络部件;

    public ContentQueryToolPart()
    {
        this.Title = "more props";
    }
    public override void ApplyChanges()
    {
        webPart.MainXslTemplate = (MainXslTemplateEnum)Enum.Parse(typeof(MainXslTemplateEnum), ddlMainXslTemplate.SelectedItem.Text);
    }
    protected override void OnInit(EventArgs e)
    {
        webPart = (ContentQuery)this.ParentToolPane.SelectedWebPart;
        base.OnInit(e);
    }
    protected override void CreateChildControls()
    {
        Label label = new Label();
        label.Text = "main xsl";
        this.Controls.Add(label);
        ddlMainXslTemplate = new DropDownList();
        ddlMainXslTemplate.DataSource = Enum.GetNames(typeof(MainXslTemplateEnum));
        ddlMainXslTemplate.DataBind();
        if (string.IsNullOrEmpty(webPart.MainXslTemplate.ToString()) == false)
        {
            ddlMainXslTemplate.SelectedValue = webPart.MainXslTemplate.ToString();
        }
        this.Controls.Add(ddlMainXslTemplate);
        //btw a custom UC can go here
    }
    protected override void RenderToolPart(System.Web.UI.HtmlTextWriter output)
    {
        output.AddAttribute(HtmlTextWriterAttribute.Id, "ContentQueryToolPart");
        output.RenderBeginTag(HtmlTextWriterTag.Div);
        base.RenderToolPart(output);
        output.RenderEndTag();
        //this is mainly for css 
    }
}

并在您的网络部件中.cs

[ToolboxItemAttribute(false)]
public class ContentQuery : ContentByQueryWebPart
{
    public MainXslTemplateEnum MainXslTemplate { get; set; }
    public override ToolPart[] GetToolParts()
    {
        List<ToolPart> toolParts = new List<ToolPart>();
        toolParts.Add(new ContentQueryToolPart());
        toolParts.AddRange(base.GetToolParts());
        return toolParts.ToArray();
    }
}