要实现带事件的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的代码更改为如下代码:
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能不能做到呢?
这里,我就用一个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(
"<table>" +
"\n"));
42
this.Controls.Add(
new
LiteralControl(
" <tr>" +
"\n"));
43
this.Controls.Add(
this._HtmlTableCell);
44
this.Controls.Add(
new
LiteralControl(
" </tr>" +
"\n"));
45
this.Controls.Add(
new
LiteralControl(
"</table>" +
"\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(
"<br>"));
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能不能做到呢?
本文转自 Eallies 51CTO博客,原文链接:http://blog.51cto.com/eallies/78823,如需转载请自行联系原作者