刚接触这东西,搞了2天,自己出现点小错误,而且好久没写过NET了,所以对一些概念有些混淆了.
来吧.
首先建立工程吧 名字为BetaWebPart
里面直接写个接收的类吧
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls;
namespace BetaWebParts
{
public class SayHello:WebPart
{
private String _sOutputText = "";
[Personalizable]
[WebBrowsable]
[WebDisplayName("OutputText")]
[WebDescription("the text")]
public String OutputText
{
get { return _sOutputText; }
set { _sOutputText=value;}
}
[ConnectionConsumer("receive the text message")]
public void ReceiveTextMessage(ITextMessage message)
{
if ((message != null) && (message.MessageContent != null))
{
this.OutputText = message.MessageContent;
}
}
protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
{
writer.Write(OutputText);
}
}
}
以上WEBPART写好后,请先编译 并且添加到WEBPART库中.具体步骤参见MSDN说明书,很简单.
然后还是在这个工程内建立一个接口,为的是可以接收到数据啦!并且使用类来实现它!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
namespace Beta2WebParts
{
public class TextMessage:ITextMessage
{
private String _messageConet = default(String);
public string MessageContent
{
get { return _messageConet; }
set { _messageConet = value; }
}
}
public interface ITextMessage
{
String MessageContent { get; set; }
}
}
OK 来编写提供数据的 "兽类"吧
代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls;
using System.Collections;
using System.Web.UI.HtmlControls;
using System.Web.UI;
using System.Data;
namespace Beta2WebParts
{
public class TextInputWP:WebPart
{
private LinkButton link = null;
string ContentText,ID = string.Empty;
DataTable Dt = new DataTable("GetSummary");
Label lbTitle = null;
protected override void CreateChildControls()
{
Dt = BindTable();
BindTitle();
for (int i = 0; i < Dt.Rows.Count; i++)
{
link = new LinkButton();
link.ID = i.ToString();
link.Text = Dt.Rows[i][1].ToString();
link.Click += new EventHandler(btn_click);
this.Controls.Add(new LiteralControl("<table>" + "/n"));
this.Controls.Add(new LiteralControl(" <tr>" + "/n"));
this.Controls.Add(new LiteralControl(" <td>" + "/n"));
this.Controls.Add(link);
this.Controls.Add(new LiteralControl(" <td>" + "/n"));
this.Controls.Add(new LiteralControl(" </tr>" + "/n"));
this.Controls.Add(new LiteralControl("</table>" + "/n"));
base.CreateChildControls();
}
}
private void GetContent(string ID,DataTable Dt)
{
for (int i = 0; i < Dt.Rows.Count; i++)
{
if (ID == Dt.Rows[i]["ID"].ToString())
{
ContentText = Dt.Rows[i]["内容"].ToString();
break;
}
}
}
private void BindTitle()
{
lbTitle = new Label();
lbTitle.Text = "新闻标题";
lbTitle.ForeColor =System.Drawing.Color.Red;
this.Controls.Add(new LiteralControl("<table>" + "/n"));
this.Controls.Add(new LiteralControl(" <tr>" + "/n"));
this.Controls.Add(new LiteralControl(" <td>" + "/n"));
this.Controls.Add(lbTitle);
this.Controls.Add(new LiteralControl(" <td>" + "/n"));
this.Controls.Add(new LiteralControl(" </tr>" + "/n"));
this.Controls.Add(new LiteralControl("</table>" + "/n"));
}
private void btn_click(object sender, System.EventArgs e)
{
LinkButton currentButton = (LinkButton)sender;
ID = (int.Parse(currentButton.ID)+1).ToString();
this.GetContent(ID, Dt);
}
private DataTable BindTable()
{
Dt.Columns.Add("ID", Type.GetType("System.Int32"));
Dt.Columns.Add("标题", Type.GetType("System.String"));
Dt.Columns.Add("内容", Type.GetType("System.String"));
DataRow dr = Dt.NewRow();
dr["ID"] = 1;
dr["标题"] = "宋山木案赔偿太少";
dr["内容"] = "12月24日下午,前山木培训总裁、“春晚抢镜红人”宋山木没有了他标志性的大胡子,准时出现在深圳罗湖法院。闹得沸沸扬扬的宋山木强奸案终于有了一审判决,法院以强奸罪判处其有期徒刑四年,并赔偿附带民事诉讼原告人刘某经济损失4205.87元。…";
Dt.Rows.Add(dr);
DataRow dr2 = Dt.NewRow();
dr2["ID"] = 2;
dr2["标题"] = "让子弹飞为何火爆";
dr2["内容"] = "近年来,有票房的国产片不少,被热议的国产片也不少,但好评如潮的国产片少之又少。所以近期上映的《让子弹飞》可以说太成功了,票房多、议论多的同时还能好评多。";
Dt.Rows.Add(dr2);
DataRow dr3 = Dt.NewRow();
dr3["ID"] = 3;
dr3["标题"] = "且慢为“土地奶奶”的死刑叫好";
dr3["内容"] = "务员职务犯罪目前已经少有判死刑的了,在即将过去的这一年,被司法处置的省部级别的官员十多位,没有一例死刑。并不是因为他们的贪污受贿没有罗亚平多,他们一般都比罗亚平多;也不是手法没有罗亚平“恶劣”,贪污受贿的恶劣程度不好评价。我很不专业,我简单化地认为,大致涉案数额越多就越恶劣,官越大就越恶劣。因为官越大,平时冠冕堂皇的大话就说得越多,而一边说大话一边侵占公众的根本利益,就越像一个骗子,因此就更恶劣。倒是官小的,例如罗亚平女士(科级),来得比较直接,平时说的话比较实在。";
Dt.Rows.Add(dr3);
return Dt;
}
[ConnectionProvider("return the text message")]
public ITextMessage ReturnTextMessage()
{
this.EnsureChildControls();
ITextMessage result = new TextMessage();
result.MessageContent = ContentText;
return result;
}
}
}
OK 编译吧 然后添加到WEB部件库中.
运行吧 效果入图