VisualStudio2008环境下,使用WebPart实现自定义页面布局
来源:互联网 发布:京东金融数据分析 编辑:程序博客网 时间:2024/05/06 01:50
VisualStudio2008环境下WebPart使用小结
A.使用WebPart的页面必须放置一个WebPartManager,用来管理页面上所有的WebPart,还可以设置
WebPart页的模式,字段布局页面只用到了两个状态,如下
LayoutWebPartManager.DisplayMode = WebPartManager.DesignDisplayMode;
LayoutWebPartManager.DisplayMode = WebPartManager.BrowseDisplayMode;
上面的两行代码分别将页面的显示模式设置为设计模式和浏览模式,设计模式下,可以将一个WebPart
拖动到页面上的任意一个WebPartZone中,在浏览模式下,可以看到拖动后页面的布局效果。
B.拖动WebPart时会触发WebPartManager的WebPartMoving事件,在这个事件中,可以利用参数
WebPartMovingEventArgs e取得如下内容
① 正在移动WebPart e.WebPart
② 借助WebPartManager取得正在移动WebPart的Index
int nWebPartIndex = LayoutWebPartManager.WebParts.IndexOf(e.WebPart);
③ 移动后WebPart所在的目标区域 e.Zone
④ 借助WebPartManager取得移动后WebPart所在的目标区域的Index
int nZoneIndex = LayoutWebPartManager.Zones.IndexOf(e.Zone) ;
⑤ 移动后WebPart在目标区域所处的位置 e.ZoneIndex
⑥ 满足一定的条件时,可以通过e.Cancel = true取消该事件
C.拖动WebPart成功后会触发WebPartManager的WebPartMoved事件,在这个事件中可以做一些移动成
功后需要处理的事情。比如在元素字段布局页面移动字段对应的WebPart成功后,它所在WebPartZone
中的所有WebPart的位置序号Index需要重新设置,保证这些位置序号Index连续。
D .利用WebPartManager的DeleteWebPart方法清除WebPartManager自己在WebPartZone加载的控件,
如下:
foreach (WebPartZone wpzItem in LayoutWebPartManager.Zones)
{
for (int n = wpzItem.WebParts.Count - 1; n >= 0; n--)
{
LayoutWebPartManager.DeleteWebPart(wpzItem.WebParts[n]);
}
}
E.利用WebPartManager的AddWebPart方法在WebPartZone中动态加载控件,这个方法需要三个参数,
第一个是需要加载的WebPart控件--WebPart webPart,第二个参数指定在哪个WebPartZone中添加--
WebPartZoneBase zone,第三个参数决定加到WebPartZone中的哪个位置--int zoneIndex,如下:
AddWebPartToZone(WebPart wpItem)
{
int zonePosition = Convert.ToInt32(wrpItem.zonePosition);
string strZoneID = "WebPartZone" + wrpItem.zoneInex;
WebPartZoneBase wpZone = LayoutWebPartManager.Zones[strZoneID];
LayoutWebPartManager.AddWebPart(wpItem, wpZone, zonePosition);
}
F.动态加载控件之后用FindControl方法通过ID找到对应控件,再设置这个控件的一些属性。如果在
加到WebPartZone之前,将WebPart中的控件的属性设置好后再加到WebPartZone中,会出现奇怪的问题
,目前也不知道为什么。
// 设置WebPart中Label的显示内容
Control ctrLabel = LayoutWebPartManager.Zones[strZoneID].WebParts
[zonePosition].FindControl("DisplayContent");
if (ctrLabel != null)
{
Label lbl = ctrLabel as Label;
lbl.Text = wrpItem.displayName;
}
// 设置WebPart中DropDownList的宽度
Control ctrInput = LayoutWebPartManager.Zones[strZoneID].WebParts
[zonePosition].FindControl("InputControl");
if (ctrInput != null)
{
DropDownList ddl = ctrInput as DropDownList;
ddl.Width = Convert.ToInt32(wrpItem.defaultWidth);
}
G.修改WebPartZone的标题和WebPartZone中没有控件时的提示信息,如下:
private void ModifyEmptyZoneText()
{
int nIndex = 1;
foreach (WebPartZone item in LayoutWebPartManager.Zones)
{
// WebPartZone的标题
item.HeaderText = PCConst.ELEMENTLAYOUTSET_WEBPARTZONE_HEADERTEXT +
nIndex.ToString();
// WebPartZone中没有控件时的提示信息
item.EmptyZoneText = PCConst.ELEMENTLAYOUTSET_WEBPARTZONE_EMPTYZONETEXT;
nIndex++;
}
}
H.动态生成WebPart
字段布局页面中使用WebPart布局,由于通过WebPartManager的AddWebPart方法只能在WebPartZone中
加入WebPart控件,所以将每个自定义字段类型对应的控件都封装成为一个独立的WebPart类,如下
public class FloatTextBoxWP : VWebPart
{
VTextBoxValidator txtInput;
public FloatTextBoxWP()
: base()
{
}
protected override void CreateChildControls()
{
base.CreateChildControls();
tdControl = new TableCell();
txtInput = new VTextBoxValidator();
txtInput.ID = "InputControl";
txtInput.MatchType = VTextBoxValidator.enMatchType.DecimalNumber;
Panel pnl = new Panel();
pnl.Controls.Add(txtInput);
pnl.Enabled = false;
tdControl.Controls.Add(pnl);
trItem.Cells.Add(tdControl);
this.Controls.Add(trItem);
ChildControlsCreated = true;
}
}
在页面中使用WebPartManager的AddWebPart方法动态加载WebPart
LayoutWebPartManager.AddWebPart(wpItem, wpZone, zonePosition);
第一个参数是动态生成的WebPart控件,第二个参数是页面上放置的某个WetPartZone(目前由于无法动
态生成WetPartZone,所以在页面上静态放置了足够多的WetPartZone);第三个参数是WebPart在
WebPartZone中的位置。
在PageLoad事件中也需要每次都重新加载一次WebPart,否则找不到WebPart中的控件。
- VisualStudio2008环境下,使用WebPart实现自定义页面布局
- VisualStudio2008环境下,使用WebPart实现自定义页面布局
- 页面布局和webpart
- VisualStudio2008环境下,用C#语言写三个方法实现发邮件功能
- Windows 7+VisualStudio2008环境下编译eMule 0.49c
- Windows 7+VisualStudio2008环境下编译eMule 0.49c
- win7下visualstudio2008破解
- 使用flex实现页面布局
- SharePoint 使用代码为页面添加WebPart
- 自定义WebPart
- 自定义webpart
- 让WebPart使用自定义的用户数据
- Swift - 使用网格(UICollectionView)的自定义布局实现复杂页面
- 使用母版页实现页面布局
- 使用母版页实现页面布局
- 使用布局来实现手机信息页面
- 使用自定义的RelateLayout实现列表布局
- WSS3SDK之:在自定义WebPart中使用对象模型
- Linux 进程管理
- CTreeCtrl 右键选中节点并显示菜单
- 宝宝
- 国内交通见闻
- Linux 信号说明列表
- VisualStudio2008环境下,使用WebPart实现自定义页面布局
- Ruby之体验
- 電腦无法复制的VCD光盘
- SQLite 体系结构
- 回国礼物大家谈(2008-09版)
- “柔道”战略解析Google战胜微软三部曲
- rails用session存储数据
- vs2008 report rdlc 数据源 提示未加载文件或程序集
- sql2005表分区之增加分区