一步一步SharePoint 2007之二十七:编写两个WebPart的联动-阿里云开发者社区

开发者社区> 余二五> 正文

一步一步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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10053 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13868 0
打败围棋冠军后,机器智能下一步能战胜黑客吗? | 开发者必读(091期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
329 0
SharePoint 2013 使用查阅项实现联动下拉框
  SharePoint列表使用中,经常会用到下拉框,而有些特殊的需求,会用到联动的下拉框,在SharePoint中默认没有这样的字段,所以如果实现,我们需要自己想办法。   这里,我们介绍如何使用JQuery+JavaScript客户端对象模型实现,下面让我简单介绍下实现的全过程。
1228 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7359 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载