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

[经验分享] 一步一步SharePoint 2007之二十六:编写一个带事件的WebPart

[复制链接]

尚未签到

发表于 2019-2-5 06:03:13 | 显示全部楼层 |阅读模式
要实现带事件的WebPart,实际上就是要实现有复合控件的WebPart,这在开发过程中具有非常的的实际意义。如果我们能够做到这点,那么,其它的什么样的WebPart,相信大家都能举一反三的做到。
  这里,我就用一个TextBox,一个Button控件来举例子,要做到的就是单击Button,能将当前系统时间显示在TextBox中。
  至于WebPart的基本操作,前面的文章中讲得很清楚,这里不再一一讲解操作步骤。
  为了方便您的学习,您可以下载本篇文章所创建的工程。单击此处下载。

  下面将记录每一步的操作过程。
  1、首先创建一个命名空间为Eallies.WebParts.Sample的C#的Class Library工程,并将默认的Class1.cs改名为Time.cs。然后添加System.Web引用,并将AssemblyInfo.cs按照前面文章中的做法更改好。
  将Time.cs的代码更改为如下代码:
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Text;
    4
    5 using System.Web.UI;
    6 using System.Web.UI.WebControls;
    7 using System.Web.UI.WebControls.WebParts;
    8 using System.Web.UI.HtmlControls;
    9
   10 namespace Eallies.WebParts.Sample
   11 {
   12     public class Time : WebPart, INamingContainer
   13     {
   14         private string _Text;
   15
   16         private HtmlTableCell _HtmlTableCell = new HtmlTableCell();
   17
   18         private TextBox _TextBox = new TextBox();
   19         private Button _Button = new Button();
   20
   21         public Time()
   22         {
   23             this._Button.Click += delegate(object sender, EventArgs e)
   24             {
   25                 this._Text = DateTime.Now.ToString();
   26
   27                 this._HtmlTableCell.InnerHtml = "";
   28                 this.AddControls();
   29             };
   30         }
   31
   32         [WebBrowsable(true), Personalizable(true)]
   33         public string Text
   34         {
   35             get { return _Text; }
   36             set { _Text = value; }
   37         }
   38
   39         protected override void CreateChildControls()
   40         {
   41             this.Controls.Add(new LiteralControl("" + "\n"));
   42             this.Controls.Add(new LiteralControl("    " + "\n"));
   43             this.Controls.Add(this._HtmlTableCell);
   44             this.Controls.Add(new LiteralControl("    " + "\n"));
   45             this.Controls.Add(new LiteralControl("" + "\n"));
   46
   47             if (this.Page.IsPostBack == false) this.AddControls();
   48         }
   49
   50         protected override void OnLoad(EventArgs e)
   51         {
   52             base.OnLoad(e);
   53
   54             if (this.Page.IsPostBack == true) this.AddControls();
   55         }
   56
   57         protected override void Render(HtmlTextWriter writer)
   58         {
   59             base.Render(writer);
   60         }
   61
   62         private void AddControls()
   63         {
   64             this._TextBox.ID = this.ID + "TextBox";
   65             this._TextBox.Text = this._Text;
   66             this._HtmlTableCell.Controls.Add(this._TextBox);
   67
   68             this._HtmlTableCell.Controls.Add(new LiteralControl(""));
   69
   70             this._Button.ID = this.ID + "Button";
   71             this._Button.Text = "Get Time";
   72             this._HtmlTableCell.Controls.Add(this._Button);
   73         }
   74     }
   75 }



  2、按照前面文章的方法为该WebPart添加强名称。
  这里做一点改变,将编译的输出路径更改为站点的bin目录,如C:\Inetpub\wwwroot\wss\VirtualDirectories\9001\_app_bin,这样做的目的是为了方便调试。


  3、其它步骤,如更改web.config、将WebPart添加到网站的WebParts列表中等,就都省了,请参照前面的文章中讲解的方法操作。
  打开网站首页,将我们刚刚编写的WebPart添加到首页中。看,TextBox中的内容为空。


  4、点击Button,则TextBox中的内容即变为当前时间了。


  至此,我们要达到的目的就实现了。有了这个简单复合控件的WebPart,大家就可以尝试编写其它一些复杂的WebPart了,但其基本的实现方法就是这样的。
  这篇文章中,为了简单起见,我尝试了不再讲解重复操作的方法,这样可以加快讲解新知识点的速度。不知道大家能不能适应这种改变呢?如果不能适应,我将改为以前的方法。
  在实际应用中,我们常常需要将某些记录的列表显示出来,单击某条记录后,在其它WebPart中显示记录的详细信息,那么,这样的WebPart能不能做到呢?
  下一篇文章我将记录如何编写两个WebPart的联动的过程。欢迎大家继续关注:)多谢!

附件:http://down.运维网.com/data/2349990


运维网声明 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-671903-1-1.html 上篇帖子: System Center 2012 R2实例3—SCOM之SharePoint全方位监视8—CPU监视 下篇帖子: SharePoint 2013实例1—构建三层服务器场2—方案设计
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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