一步一步SharePoint 2007之二十七:编写两个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 :  WebPartIPostBackEventHandler
   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 ==  falsethis.AddRows();
   35         }
   36 
   37          protected  override  void OnLoad( EventArgs e)
   38         {
   39              base.OnLoad(e);
   40 
   41              if ( this.Page.IsPostBack ==  truethis.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( thisthis._Items[i].ToString()) +  "\">" +  this._Items[i].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[i].Title ==  "Instance")
   77                 {
   78                      Instance instance = ( Instance)WebPartManager.WebParts[i];
   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的过程中,有时候出了错误,却又不知道是什么原因,这时,找到原因的最好办法是单步调试。







本文转自 Eallies 51CTO博客,原文链接:http://blog.51cto.com/eallies/78821,如需转载请自行联系原作者
目录
相关文章
|
JavaScript
webpack优化篇(三十九):初级分析:使用 webpack 内置的 stats
webpack优化篇(三十九):初级分析:使用 webpack 内置的 stats
210 0
webpack优化篇(三十九):初级分析:使用 webpack 内置的 stats
|
缓存 Shell 开发工具
webpack原理篇(五十五):webpack流程:准备阶段
webpack原理篇(五十五):webpack流程:准备阶段
73 0
webpack原理篇(五十五):webpack流程:准备阶段
webpack原理篇(六十三):插件基本结构介绍
webpack原理篇(六十三):插件基本结构介绍
72 0
webpack原理篇(六十三):插件基本结构介绍
webpack配置篇(三十一):功能模块设计和目录结构
webpack配置篇(三十一):功能模块设计和目录结构
81 0
webpack配置篇(三十一):功能模块设计和目录结构
|
JavaScript 前端开发 测试技术
webpack配置篇(三十三):冒烟测试介绍和实际运用
webpack配置篇(三十三):冒烟测试介绍和实际运用
145 0
webpack配置篇(三十三):冒烟测试介绍和实际运用
|
JavaScript
第六章 webpack5开发服务器与自动化
介绍开发模式下如何观察代码运行结果
104 0
|
前端开发
Selenium系列(十四) - Web UI 自动化基础实战(1)
Selenium系列(十四) - Web UI 自动化基础实战(1)
125 0
Selenium系列(十四) - Web UI 自动化基础实战(1)
|
前端开发 JavaScript API
【译】 Web Components 的高级工具
该系列由 5 篇文章构成,我们在前 4 篇文章中对构成 Web Components 标准的技术进行了全面的介绍。
813 0