使用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效果图:
![](http://www.gz-yg.com/images/webpart.bmp)
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;
}
}
}
代码下载
自定义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效果图:
![](http://www.gz-yg.com/images/webpart.bmp)
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;
}
}
}
代码下载
相关文章推荐
- [译]SharePoint 2007 SDK:使用属性来自定义内容查询WEB部件
- sharepoint中自定义webpart属性面板(Web Part Properties(ToolPart))
- 使用Visual Studio创建简单的自己定义Web Part 部件属性
- SPS2003内容编辑器web部件使用技巧
- webwrok iterator标签status属性使用方法
- TextArea Field in SharePoint webpart property 在sharepoint webpart属性面版里使用TextArea
- MVC中以Html.Action形式调用PartialView的Action,如果该Action使用了OutputCache特性,且使用了该特性的CacheProfile属性(即从WebConfig中读取缓存配置),会出现错误:Duration 必须为正数。
- web HTML5的自定义属性data-xxx不能使用大写字母
- SharePoint 2010 WebPart Web部件 总贴
- 在 ASP.NET Web 部件应用程序中使用服务器控件
- 一步步学习SPD2010--第十四章节--在Web页面使用控件(1)--处理功能区和标签属性任务窗格
- CSS学习笔记Padding 属性中参数的定义与使用
- Spring学习笔记 关于Bean定义的重用-使用abstract以及parent标签属性
- 使用StaticResource给控件定义公共的样式和属性来写界面XAML
- Struts编程 Tiles的使用2——基于XML配置文件的定义和属性
- selenium web driver 使用JS修改input属性
- Java学习笔记十四:如何定义Java中的类以及使用对象的属性
- 用web用户控件的方式添加到webpart,使用ajax实现无刷新总结
- 使用MemberShip时Web.config中属性其功能解释
- Android中使用shape来定义控件的一些显示属性