要能实现左边列表,右边详细信息的记录显示方式,我们需要解决两个方面的问题。
一个是如何实现列表,以及点击某一项后的事件触发;另一个是如何在一个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的代码更改为如下代码:
2、其它步骤,如添加强名称、更改web.config、将WebPart添加到网站的WebParts列表中等,就都省了,请参照前面的文章中讲解的方法操作。
打开网站首页,将我们刚刚编写的WebPart添加到首页中。看,List列表中有五项值,Instance中的内容为Hello World!。
3、点击List列表中的某一项,如第二项,则Instance中的内容即变为Row 2了。
至此,我们已经实现了两个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[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,如需转载请自行联系原作者