WebPartZone的ZoneTemplate可以通过声明方式来定义,在每个用户首次(即没有已保存状态时)登录时,WebPart Runtime会按ZoneTemplate内的定义生成默认的WebPart布局,并在用户对布局进行调整后此用户后续登录时,从Personal PersonalizationProvider中还原布局。
当如果要动态的设置默认的ZoneTemplate时,可以按以下两种方法实现:
1, 参考http://msdn.microsoft.com/msdnmag/issues/05/09/WebParts/
<%@ Register Assembly="WingtipWebParts" Namespace="WingtipWebParts"
TagPrefix="Wingtip" %>
<asp:WebPartManager ID=" WebPartManager1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server" HeaderText="Zone 1">
<ZoneTemplate>
<Wingtip:HelloWorld runat="server" id="HelloWorld" />
</ZoneTemplate>
</asp:WebPartZone>
但这种方式只适合默认只有一个WebPart,如果有多个的话,将变成一个整体拖拽。
2,先创建一个新类,并实现System.Web.UI.ITemplate接口,在InstantiateIn方法内创建需要默认创建的WebPart实例,并添加到InstantiateIn方法的参数container的Controls集合中,然后对WebPartZone的Init事件添加委托,在事件触发时,将当前的WebPartZone的ZoneTemplate属性设置为这个新类的实例。