设为首页 收藏本站
查看: 581|回复: 0

[经验分享] SharePoint 2010--为WebPart创建自定义属性

[复制链接]

尚未签到

发表于 2015-9-29 09:39:25 | 显示全部楼层 |阅读模式
  通过为web part创建自定义属性,我们可以通过改变web part的属性实现web part在页面上的动态显示。这些属性存储在数据库中,可以在页面加载的时候进行重用。
  接下来创建的web part将会显示Address,web part提供自定义属性可以供SharePoint 的用户进行修改。我们有一些简单的地址信息如name,street,zip code和city。


  • 创建项目
    打开Visual Studio,创建一个Visual Web Part project,命名为Example.AddressWebPart。
  删除默认的Visual Web Part:“VisualWebPart1”
  添加一个Visual Web Part, 命名为Address
  打开Features文件夹,双击Feature1,改变feature名字为Address Feature,
  为了使得web part在SharePoint上有一个很好的描述,我们可以对配置信息做一些小的改动:双击Address.webpart文件在Address文件夹中,改变web part的描述信息:



<?xml version="1.0" encoding="utf-8"?>
<webParts>
  <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
    <metaData>
      <type name="Images.Address.Address, $SharePoint.Project.AssemblyFullName$" />
      <importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage>
    </metaData>
    <data>
      <properties>
        <property name="Title" type="string">Address</property>
        <property name="Description" type="string">Displays a personalizable address on the screen</property>
      </properties>
    </data>
  </webPart>
</webParts>
  我们也可以改变web part的category,例如改变category为“Utilities”web part就会在名字为Utilities的group中,打开Elements.xml文件:



<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/" >
  <Module Name="Address" List="113" Url="_catalogs/wp">
    <File Path="Address\Address.webpart" Url="Address.webpart" Type="GhostableInLibrary" >
      <Property Name="Group" Value="Utilities" />
    </File>
  </Module>
</Elements>
  


  • 自定义web part
  首先,添加我们需要的属性到Address.cs文件中,Personalizable告诉Web Part framework去存储属性到数据库中,WebBrowsable属性高数web part framework在web part的编辑区显示属性:



namespace Images.Address
{
    [ToolboxItemAttribute(false)]
    public class Address : WebPart
    {
        // Visual Studio might automatically update this path when you change the Visual Web Part project item.
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/Images/Address/AddressUserControl.ascx";
         [Personalizable(), WebBrowsable]
         public String Firstname { get; set; }
        [Personalizable(), WebBrowsable]
        public String Lastname { get; set; }
        [Personalizable(), WebBrowsable]
        public String Street { get; set; }
        [Personalizable(), WebBrowsable]
        public int Zip { get; set; }
        [Personalizable(), WebBrowsable]
        public String City { get; set; }
        protected override void CreateChildControls()
        {
            Control control = Page.LoadControl(_ascxPath);
            Controls.Add(control);
        }
    }
}
  现在我们可以查看web part在SharePoint中的显示结果,deploy当前的solution,添加创建的web part到一个SharePoint 的page上,点击“Edit Web Part”,我们可以看到定义的属性在“miscellaneous”下面,如图所示:
DSC0000.png             
  尝试在文本框中出入一些值,web part framework将会存储这些值到数据库中,并关联到web part。然而在web part中没有显示,我们需要添加control到“AddressUserControl.ascx”,添加control之前,对“AddressUserControl.ascx.cs”文件做如下修改:



public partial class AddressUserControl : UserControl
    {
        public Address WebPart { get; set; }
    }
  然后点击“Address.cs”文件,编辑CreateChildControls事件:



protected override void CreateChildControls()
        {
            Control control = Page.LoadControl(_ascxPath);
            if (control != null)
            {
                ((AddressUserControl)control).WebPart = this;
            }
            Controls.Add(control);
        }
  通过上述代码的改变,我们告诉AddressUserControl去填充在web part配置时的属性。这样我们就可以进入到在Address.cs文件中定义的属性。
  最后添加control到AddressUserControl.ascx文件:



<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AddressUserControl.ascx.cs" Inherits="Images.Address.AddressUserControl" %>
<asp:Label ID="lblFirstname" runat="server" style="font-weight: 700" ></asp:Label>&nbsp;<asp:Label  
     ID="lblLastname" runat="server" style="font-weight: 700" ></asp:Label>
      <br />
       <br />
        <asp:Label ID="lblStreet" runat="server" ></asp:Label>
         <br />
          <asp:Label ID="lblZip" runat="server" ></asp:Label>&nbsp;-&nbsp;<asp:Label ID="lblCity" runat="server" ></asp:Label>
  添加Prerender事件到AddressUserControls.ascx.cs文件:



protected override void OnPreRender(EventArgs e)  
        {  
            base.OnPreRender(e);  
            if (this.WebPart != null)  
            {
                this.lblFirstname.Text = this.WebPart.Firstname;  
                this.lblLastname.Text = this.WebPart.Lastname;  
                this.lblStreet.Text = this.WebPart.Street;
                this.lblZip.Text = this.WebPart.Zip.ToString();
                this.lblCity.Text = this.WebPart.City;
            }
        }
  Deploy当前的solution,添加web part到一个SharePoint page上,修改它的属性,结果显示如下:
DSC0001.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-120292-1-1.html 上篇帖子: 配置SharePoint站点的域认证和表单认证双重认证1/2 下篇帖子: 通过代码为SharePoint添加Javascript引用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表