您的位置:首页 > 其它

使用TOOLPART定义WEBPART(web部件)的属性

2008-02-19 17:39 465 查看
Defines custom tool parts that display a customized user interface for defining the properties of a Web Part inside of the tool pane.

自定义TOOLPART 提供一个编辑WEB部件属性的接口。

TOOLPART的生命周期如下:

OnInit 初始化,加载相关配置文件 (如WebPart任务面板上的属性,样式等配置信息)

LoadViewState 返回先前最后一次被处理的状态 (如webpart是展现,隐藏还是关闭)

CreateChildControls 创建WebPart UI ,通过Controls.Add()方法装载Web 控件

(Note:当Webpart是第一次展现的时候CreateChildControls方法发生在OnLoad方法之前,而经过一次postback之后,它发生在OnLoad方法之后)

OnLoad 从数据库或者其他系统重新获取要展现的数据 (如获取数据库连接)

User-Generated Events 响应用户生成事件 (如Button Click)

RendenContents 生成 html output,实现最终的UI展现 (由HTMLTextWriter class 来实现)

SaveViewState 保存控件状态 (ViewState 被序列化之后保存在一个hidden field 里)

Dispose 从内存中移除对象,释放临界资源 (如释放数据库连接)

OnUnLoad 最终完成内存清除工作

TOOLPART效果图:



TOOLPART代码:

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.SharePoint;

using System.Web.UI.WebControls;

using System.Web.UI;

using System.Data;

namespace TestDownList

{

public class TestDownListCustom : Microsoft.SharePoint.WebPartPages.ToolPart

{

private DropDownList ddlModel = new DropDownList();

private DropDownList ddlModelType = new DropDownList();

public TestDownListCustom()

{

this.Title = "用户自定义参数";

}

protected override void RenderToolPart(HtmlTextWriter output)

{

//base.RenderToolPart(output);

output.WriteLine("<br>类型:<br>");

ddlModel.RenderControl(output);

output.WriteLine("<br>子类型:<br>");

ddlModelType.RenderControl(output);

}

protected override void CreateChildControls()

{

base.CreateChildControls();

//if (!this.Page.IsPostBack)

//{

ddlModel.AutoPostBack = true;

ddlModel.SelectedIndexChanged += new EventHandler(ddlModel_SelectedIndexChanged);

ddlModelType.AutoPostBack = true;

ddlModelType.SelectedIndexChanged += new EventHandler(ddlModelType_SelectedIndexChanged);

DataTable dt = new DataTable();

dt.Columns.Add("ModelName", typeof(System.String));

dt.Columns.Add("ModelID", typeof(System.String));

DataRow dw = dt.NewRow();

dw[0] = "one";

dw[1] = "one";

dt.Rows.Add(dw);

dw = dt.NewRow();

dw[0] = "two";

dw[1] = "two";

dt.Rows.Add(dw);

if (dt.Rows.Count > 0)

{

ddlModel.DataSource = dt;

ddlModel.DataTextField = dt.Columns["ModelName"].ToString();

ddlModel.DataValueField = dt.Columns["ModelID"].ToString();

ddlModel.DataBind();

ddlModel.Items.Insert(0, new ListItem("-请选择-", ""));

// ddlModel.SelectedValue = ((TestDownList)this.ParentToolPane.SelectedWebPart).Model;

}

else

{

ddlModel.Items.Clear();

ddlModel.Items.Add(new ListItem("没有相关栏目", ""));

}

//新闻类型选择下拉列表

dt = new DataTable();

dt.Columns.Add("NewsKindName", typeof(System.String));

dt.Columns.Add("NewsKindID", typeof(System.String));

if (ddlModel.SelectedValue != null)

{

dw = dt.NewRow();

dw[0] = "model选择类型:" + ddlModel.SelectedValue;

dw[1] = ddlModel.SelectedValue;

dt.Rows.Add(dw);

}

if (((TestDownList)this.ParentToolPane.SelectedWebPart).Model != null)

{

if (ddlModel.SelectedValue.Equals(""))

{

dw = dt.NewRow();

dw[0] = "没数据";

dw[1] = "没数据";

dt.Rows.Add(dw);

}

else

{

if (((TestDownList)this.ParentToolPane.SelectedWebPart).Model == "one")

{

dw = dt.NewRow();

dw[0] = "one数据1";

dw[1] = "one数据1";

dt.Rows.Add(dw);

dw = dt.NewRow();

dw[0] = "one数据2";

dw[1] = "one数据2";

dt.Rows.Add(dw);

}

else

{

dw = dt.NewRow();

dw[0] = "two数据1";

dw[1] = "two数据1";

dt.Rows.Add(dw);

dw = dt.NewRow();

dw[0] = "two数据2";

dw[1] = "two数据2";

dt.Rows.Add(dw);

}

}

}

else

{

}

if (dt.Rows.Count > 0)

{

ddlModelType.DataSource = dt;

ddlModelType.DataTextField = dt.Columns["NewsKindName"].ToString();

ddlModelType.DataValueField = dt.Columns["NewsKindID"].ToString();

ddlModelType.DataBind();

ddlModelType.Items.Insert(0, new ListItem("-请选择-", ""));

}

else

{

ddlModelType.Items.Clear();

ddlModelType.Items.Add(new ListItem("没有相关类型", ""));

}

Controls.Add(ddlModel);

Controls.Add(ddlModelType);

//}

}

public override void ApplyChanges()

{

((TestDownList)this.ParentToolPane.SelectedWebPart).Model = this.ddlModel.SelectedValue;

((TestDownList)this.ParentToolPane.SelectedWebPart).ModelType = this.ddlModelType.SelectedValue;

}

private void ddlModel_SelectedIndexChanged(object sender, EventArgs e)

{

((TestDownList)this.ParentToolPane.SelectedWebPart).Model = this.ddlModel.SelectedValue;

DataTable dt = new DataTable();

dt.Columns.Add("NewsKindName", typeof(System.String));

dt.Columns.Add("NewsKindID", typeof(System.String));

if (ddlModel.SelectedValue != null)

{

if (ddlModel.SelectedValue.Equals(""))

{

DataRow dw = dt.NewRow();

dw[0] = "没数据";

dw[1] = "没数据";

dt.Rows.Add(dw);

}

else

{

if (ddlModel.SelectedValue == "one")

{

DataRow dw = dt.NewRow();

dw[0] = "one数据1";

dw[1] = "one数据1";

dt.Rows.Add(dw);

dw = dt.NewRow();

dw[0] = "one数据2";

dw[1] = "one数据2";

dt.Rows.Add(dw);

}

else

{

DataRow dw = dt.NewRow();

dw[0] = "two数据1";

dw[1] = "two数据1";

dt.Rows.Add(dw);

dw = dt.NewRow();

dw[0] = "two数据2";

dw[1] = "two数据2";

dt.Rows.Add(dw);

}

}

}

ddlModelType.Items.Clear();

if (dt.Rows.Count > 0)

{

ddlModelType.DataSource = dt;

ddlModelType.DataTextField = dt.Columns["NewsKindName"].ToString();

ddlModelType.DataValueField = dt.Columns["NewsKindID"].ToString();

ddlModelType.DataBind();

ddlModelType.Items.Insert(0, new ListItem("-请选择-", ""));

}

else

{

ddlModelType.Items.Clear();

ddlModelType.Items.Add(new ListItem("没有相关类型", ""));

}

}

private void ddlModelType_SelectedIndexChanged(object sender, EventArgs e)

{

((TestDownList)this.ParentToolPane.SelectedWebPart).ModelType = ddlModelType.SelectedValue;

}

}

}

代码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐