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

[经验分享] 一步一步SharePoint 2007之二十七:编写两个WebPart的联动

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-9-26 09:52:34 | 显示全部楼层 |阅读模式
一步一步SharePoint 2007之二十七:编写两个WebPart的联动


摘要

  前面的文章中,我们编写了一个复合控件的WebPart,实现了这个后,大家就可以编写非常复杂的WebPart了。
  在实际应用中,我们常常需要将某些记录的列表显示出来,单击某条记录后,在其它WebPart中显示记录的详细信息,那么,这样的WebPart能不能做到呢?
  本篇文章将介绍如何编写两个WebPart的联动的过程。

正文

  要能实现左边列表,右边详细信息的记录显示方式,我们需要解决两个方面的问题。
  一个是如何实现列表,以及点击某一项后的事件触发;另一个是如何在一个WebPart中访问另外一个WebPart。
  这里,我就用一个列表的WebPart,以及前面我们实现过的Hello World的WebPart来举例子,要做到的就是单击List列表中的某一项,能将该项的内容显示在Hello World控件中。
  至于WebPart的基本操作,前面的文章中讲得很清楚,这里不再一一讲解操作步骤。
  为了方便您的学习,您可以下载本篇文章所创建的工程。单击此处下载。

  下面将记录每一步的操作过程。
  1、首先创建一个命名空间为Eallies.WebParts.Associated的C#的Class Library工程,并将默认的Class1.cs改名为List.cs。然后添加System.Web、System.WebParts.Hello引用,并将AssemblyInfo.cs按照前面文章中的做法更改好。
  将List.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.WebParts;
    7 using System.Web.UI.HtmlControls;
    8
    9 using System.Collections;
   10
   11 using Eallies.WebParts.Hello;
   12
   13 namespace Eallies.WebParts.Associated
   14 {
   15     public class List : WebPart, IPostBackEventHandler
   16     {
   17         private IList _Items = new ArrayList();
   18
   19         private HtmlTableCell _HtmlTableCell = new HtmlTableCell();
   20
   21         public List()
   22         {
   23             this.GetItems();
   24         }
   25
   26         protected override void CreateChildControls()
   27         {
   28             this.Controls.Add(new LiteralControl("<table>" + "\n"));
   29             this.Controls.Add(new LiteralControl("    <tr>" + "\n"));
   30             this.Controls.Add(this._HtmlTableCell);
   31             this.Controls.Add(new LiteralControl("    </tr>" + "\n"));
   32             this.Controls.Add(new LiteralControl("</table>" + "\n"));
   33
   34             if (this.Page.IsPostBack == false) this.AddRows();
   35         }
   36
   37         protected override void OnLoad(EventArgs e)
   38         {
   39             base.OnLoad(e);
   40
   41             if (this.Page.IsPostBack == true) this.AddRows();
   42         }
   43
   44         protected override void Render(HtmlTextWriter writer)
   45         {
   46             base.Render(writer);
   47         }
   48
   49         private void GetItems()
   50         {
   51             this._Items.Add("Row 1");
   52             this._Items.Add("Row 2");
   53             this._Items.Add("Row 3");
   54             this._Items.Add("Row 4");
   55             this._Items.Add("Row 5");
   56         }
   57
   58         private void AddRows()
   59         {
   60             for (int i = 0; i < _Items.Count; i++)
   61             {
   62                 this._HtmlTableCell.Controls.Add(new LiteralControl("<table>" + "\n"));
   63                 this._HtmlTableCell.Controls.Add(new LiteralControl("    <tr>" + "\n"));
   64                 this._HtmlTableCell.Controls.Add(new LiteralControl("        <td style=\"cursor:hand\" onclick=\"" + this.Page.ClientScript.GetPostBackEventReference(this, this._Items.ToString()) + "\">" + this._Items.ToString() + "</td>" + "\n"));
   65                 this._HtmlTableCell.Controls.Add(new LiteralControl("    </tr>" + "\n"));
   66                 this._HtmlTableCell.Controls.Add(new LiteralControl("</table>" + "\n"));
   67             }
   68         }
   69
   70         #region IPostBackEventHandler Members
   71
   72         public void RaisePostBackEvent(string eventArgument)
   73         {
   74             for (int i = 0; i < WebPartManager.WebParts.Count; i++)
   75             {
   76                 if (WebPartManager.WebParts.Title == "Instance")
   77                 {
   78                     Instance instance = (Instance)WebPartManager.WebParts;
   79                     instance.Text = eventArgument;
   80                 }
   81             }
   82         }
   83
   84         #endregion
   85     }
   86 }


  2、其它步骤,如添加强名称、更改web.config、将WebPart添加到网站的WebParts列表中等,就都省了,请参照前面的文章中讲解的方法操作。
  打开网站首页,将我们刚刚编写的WebPart添加到首页中。看,List列表中有五项值,Instance中的内容为Hello World!。


  3、点击List列表中的某一项,如第二项,则Instance中的内容即变为Row 2了。


  至此,我们已经实现了两个WebPart的联动,这样的话,最常见的左边列表、右边详细信息的记录显示方法就成为现实了。
  在编写WebPart的过程中,有时候出了错误,却又不知道是什么原因,这时,找到原因的最好办法是单步调试。
  下一篇文章我将记录如何实现WebPart的单步调试的过程。欢迎大家继续关注:)多谢!

运维网声明 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-118959-1-1.html 上篇帖子: HttpHandler 在SharePoint 2010中的应用 下篇帖子: SharePoint 中调用传出电子邮件中的邮件服务器及地址发送邮件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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