以前一直感觉,让用户在前台自己定义自己的页面是一件很高深的事,哪需求很强的javascript的能力,所以我一直也没有想过要去学一下。今天一个很偶然的机会,我在csdn上看到一个兄弟在问这个问题。而且有一个兄弟给出的答案就是webPart。我不知道这是什么,就去查了一下。才发现,原来是我一直在用的vs2005里自代的一个功能,唉。。。。。。。一直都没有使用。真是可悲啊。我就上网查了一下相关的资料,来看了一下,做了一个简单的例子。
在vs2005左边的工具栏目里有一个webParts的工具组,里面全是相关的工具,大家可以去看一下。
在使用web Part时,最重要的一个组件就是WebPartManager
它相当于AJAX里面的ScriptManager,只在页面中加入它,你才可以使用相关的技术,不然,显示出来的,你可以在你的页面中拉出来一个。
在页面中的显示就是 为了让程序更直观一些,我在这里加入一个table并把border设置为1。这样我们就能看见我们是否可以拖运相应的信息了。
这里我们建立一个三行二列的表
我在第一个<tr>中放一个DropDownList。为什么呢。因为webpart有五种模式,分别代码了不同的显示方式(这是我的理解)分别是:
我们为onselectedindexchanged添加程序
下面的代码,我不做过多的解释,就是为webpart设置不同的模式,它们的中文解释在前面有解释.
下面我们来实现相应的webpart。这里有几个主要的控件:
第一个:WebPartZone,你要在页面上显示的内容,全部要放到它的里,有一点要说明的,你分几部分,就放几个去。我们里一共是要显示二个。就放了二个。你可能要问了。你的table里,是可以放四个的,是的,是可以放四个,另外二个我是留着,拖运用的。你直接在工具栏目里,往<td>里放二个WebPartZone,一个<td>一个。它为你提供了几种默认的样式,你可以选择一下。
我们再往里面放点东西。下面是代码
这里看起来代码很多,其实大多数都是它的样式代码,主要的代码就是
这里了。我想大家能看明白吧。
这时,我们保存看一下,出来了,可是有一上问题,它根本就不能自由的移动,而且每个栏目的右上角的下拉倒三角,里面的删除,一旦点了,这个栏目就出来了。这怎么回事呢。我们在下拉框里选择一下布局,看到了吗,这下可以移动了,可是消失的还是没有出来,下面我们来完成添加功能。
同上面一样,我们再加一个添加的,就是为了把删除的再找回来。这里的删除不是真的不要了,真是关闭。
这里我们用到CatalogZone。它的用法与WebPartZone差不多
看到了,是不是差不多,唯一不同的是,在这里面我们要加的不是常用的控件,而是与它进行配套显示的PageCatalogPart控件。它的用处就是为了把关闭的再显示出来
保存,我们再试一下。选择添加模式,怎么样出来吧。
如果我们要对相应的栏目进行修改,怎么办呢。这就要用到EditorZone了。用法都差不多
下面的是代码
重点是
它们四个分别代码了,不同的修改方式,你可以自己试一下,这里有一点要说明的是BehaviorEditorPart要想显示出来,我们必须要设置一下web.config不然是显示不出来的
在web.config里添加如下代码
在page_load里添加
这回我们再看一下,感觉如何。
在vs2005左边的工具栏目里有一个webParts的工具组,里面全是相关的工具,大家可以去看一下。
在使用web Part时,最重要的一个组件就是WebPartManager
它相当于AJAX里面的ScriptManager,只在页面中加入它,你才可以使用相关的技术,不然,显示出来的,你可以在你的页面中拉出来一个。
在页面中的显示就是
- <asp:WebPartManager ID="WebPartManager1" runat="server">
- </asp:WebPartManager>
这里我们建立一个三行二列的表
- <table width="100%" border="1">
- <tr>
- <td colspan="2">这里我要入一个DropDownList控件,用来显示不同的模式</td>
- </tr>
- <tr>
- <td style="width:50%">这里要入一个控制来让它作为可拖运的东西</td>
- <td style="width:50%">这里要入一个控制来让它作为可拖运的东西</td>
- <tr>
- <tr>
- <td style="width:50%">这里要入一个控制来让它作为可拖运的东西</td>
- <td style="width:50%">这里要入一个控制来让它作为可拖运的东西</td>
- <tr>
- <tr>
- <td colspan="2">这里呢,是用来显示相应控制的信息(什么是控制信息呢,后面你就会知道了)</td>
- </tr>
- </table>
- <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
- onselectedindexchanged="DropDownList1_SelectedIndexChanged">
- <asp:ListItem Value="a">浏览模式</asp:ListItem>
- <asp:ListItem Value="b">布局模式</asp:ListItem>
- <asp:ListItem Value="c">编辑模式</asp:ListItem>
- <asp:ListItem Value="d">添加部件</asp:ListItem>
- <asp:ListItem Value="e">数据连接</asp:ListItem>
- </asp:DropDownList>
下面的代码,我不做过多的解释,就是为webpart设置不同的模式,它们的中文解释在前面有解释.
- switch (this.DropDownList1.SelectedValue)
- {
- case "a":
- this.WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode;
- break;
- case "b":
- this.WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode;
- break;
- case "c":
- this.WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode;
- break;
- case "d":
- this.WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode;
- break;
- case "e":
- this.WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode;
- break;
- }
第一个:WebPartZone,你要在页面上显示的内容,全部要放到它的里,有一点要说明的,你分几部分,就放几个去。我们里一共是要显示二个。就放了二个。你可能要问了。你的table里,是可以放四个的,是的,是可以放四个,另外二个我是留着,拖运用的。你直接在工具栏目里,往<td>里放二个WebPartZone,一个<td>一个。它为你提供了几种默认的样式,你可以选择一下。
我们再往里面放点东西。下面是代码
- <tr>
- <td style="width:50%">
- <asp:WebPartZone ID="leftTop" runat="server" BorderColor="#CCCCCC" Width
- ="100%" Height="100%"
- Font-Names="Verdana" Padding="6" CloseVerb-Text="X" CloseVerb-Visible="False" MinimizeVerb-Text="_" RestoreVerb-Text="囗">
- <EmptyZoneTextStyle Font-Size="0.8em"></EmptyZoneTextStyle>
- <PartStyle Font-Size="0.8em" ForeColor="#333333"></PartStyle>
- <TitleBarVerbStyle Font-Size="0.6em" Font-Underline="False" ForeColor="White">
- </TitleBarVerbStyle>
- <MenuLabelHoverStyle ForeColor="#D1DDF1"></MenuLabelHoverStyle>
- <MenuPopupStyle BackColor="#507CD1" BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.6em">
- </MenuPopupStyle>
- <MenuVerbStyle BorderColor="#507CD1" BorderWidth="1px" BorderStyle="Solid" ForeColor="White">
- </MenuVerbStyle>
- <PartTitleStyle BackColor="#507CD1" Font-Bold="True" Font-Size="0.8em" ForeColor="White">
- </PartTitleStyle>
- <ZoneTemplate>
- <asp:Panel ID="Panel1" runat="server" title="左上信息显示">
- <table width="100%" height="100%">
- <tr>
- <td>信息显示出来吧</td>
- </tr>
- <tr>
- <td>信息显示出来吧</td>
- </tr>
- <tr>
- <td>信息显示出来吧</td>
- </tr>
- <tr>
- <td>信息显示出来吧</td>
- </tr>
- <tr>
- <td>信息显示出来吧</td>
- </tr>
- </table>
- </asp:Panel>
- </ZoneTemplate>
- <MenuVerbHoverStyle BackColor="#EFF3FB" BorderColor="#CCCCCC" BorderWidth="1px" BorderStyle="Solid" ForeColor="#333333">
- </MenuVerbHoverStyle>
- <PartChromeStyle BackColor="#EFF3FB" BorderColor="#D1DDF1" Font-Names="Verdana" ForeColor="#333333">
- </PartChromeStyle>
- <HeaderStyle HorizontalAlign="Center" Font-Size="0.7em" ForeColor="#CCCCCC">
- </HeaderStyle>
- <MenuLabelStyle ForeColor="White"></MenuLabelStyle>
- <EditVerb Text="编辑" />
- </asp:WebPartZone>
- </td>
- <td style="width:50%">
- <asp:WebPartZone ID="rightTop" runat="server" BorderColor="#CCCCCC" Width="100%" Height="100%"
- Font-Names="Verdana" Padding="6">
- <EmptyZoneTextStyle Font-Size="0.8em"></EmptyZoneTextStyle>
- <PartStyle Font-Size="0.8em" ForeColor="#333333"></PartStyle>
- <TitleBarVerbStyle Font-Size="0.6em" Font-Underline="False" ForeColor="White">
- </TitleBarVerbStyle>
- <MenuLabelHoverStyle ForeColor="#FFCC66"></MenuLabelHoverStyle>
- <MenuPopupStyle BackColor="#990000" BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.6em">
- </MenuPopupStyle>
- <MenuVerbStyle BorderColor="#990000" BorderWidth="1px" BorderStyle="Solid" ForeColor="White">
- </MenuVerbStyle>
- <PartTitleStyle BackColor="#990000" Font-Bold="True" Font-Size="0.8em" ForeColor="White">
- </PartTitleStyle>
- <ZoneTemplate>
- <asp:Calendar ID="Calendar1" runat="server" Title="右上显示"></asp:Calendar>
- </ZoneTemplate>
- <MenuVerbHoverStyle BackColor="#FFFBD6" BorderColor="#CCCCCC" BorderWidth="1px" BorderStyle="Solid" ForeColor="#333333">
- </MenuVerbHoverStyle>
- <PartChromeStyle BackColor="#FFFBD6" BorderColor="#FFCC66" Font-Names="Verdana" ForeColor="#333333">
- </PartChromeStyle>
- <HeaderStyle HorizontalAlign="Center" Font-Size="0.7em" ForeColor="#CCCCCC">
- </HeaderStyle>
- <MenuLabelStyle ForeColor="White"></MenuLabelStyle>
- </asp:WebPartZone>
- </td>
- </tr>
这里看起来代码很多,其实大多数都是它的样式代码,主要的代码就是
- # <ZoneTemplate>
- # <asp:Calendar ID="Calendar1" runat="server" Title="右上显示"></asp:Calendar>
- # </ZoneTemplate>
这时,我们保存看一下,出来了,可是有一上问题,它根本就不能自由的移动,而且每个栏目的右上角的下拉倒三角,里面的删除,一旦点了,这个栏目就出来了。这怎么回事呢。我们在下拉框里选择一下布局,看到了吗,这下可以移动了,可是消失的还是没有出来,下面我们来完成添加功能。
同上面一样,我们再加一个添加的,就是为了把删除的再找回来。这里的删除不是真的不要了,真是关闭。
这里我们用到CatalogZone。它的用法与WebPartZone差不多
- <asp:CatalogZone ID="CatalogZone2" runat="server" BackColor="#EFF3FB"
- BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana" Padding="6">
- <HeaderVerbStyle Font-Bold="False" Font-Size="0.8em" Font-Underline="False"
- ForeColor="#333333" />
- <PartTitleStyle BackColor="#507CD1" Font-Bold="True" Font-Size="0.8em"
- ForeColor="White" />
- <FooterStyle BackColor="#D1DDF1" HorizontalAlign="Right" />
- <PartChromeStyle BorderColor="#D1DDF1" BorderStyle="Solid" BorderWidth="1px" />
- <PartLinkStyle Font-Size="0.8em" />
- <InstructionTextStyle Font-Size="0.8em" ForeColor="#333333" />
- <ZoneTemplate>
- <asp:PageCatalogPart ID="PageCatalogPart2" runat="server" />
- </ZoneTemplate>
- <LabelStyle Font-Size="0.8em" ForeColor="#333333" />
- <SelectedPartLinkStyle Font-Size="0.8em" />
- <VerbStyle Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333" />
- <HeaderStyle BackColor="#D1DDF1" Font-Bold="True" Font-Size="0.8em"
- ForeColor="#333333" />
- <EditUIStyle Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333" />
- <PartStyle BorderColor="#EFF3FB" BorderWidth="5px" />
- <EmptyZoneTextStyle Font-Size="0.8em" ForeColor="#333333" />
- </asp:CatalogZone>
保存,我们再试一下。选择添加模式,怎么样出来吧。
如果我们要对相应的栏目进行修改,怎么办呢。这就要用到EditorZone了。用法都差不多
下面的是代码
- <asp:EditorZone ID="EditorZone1" runat="server" BackColor="#EFF3FB"
- BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana" Padding="6">
- <FooterStyle HorizontalAlign="Right" BackColor="#D1DDF1"></FooterStyle>
- <PartTitleStyle Font-Bold="True" Font-Size="0.8em" ForeColor="#333333">
- </PartTitleStyle>
- <PartChromeStyle BorderColor="#D1DDF1" BorderWidth="1px" BorderStyle="Solid">
- </PartChromeStyle>
- <PartStyle BorderColor="#EFF3FB" BorderWidth="5px"></PartStyle>
- <LabelStyle Font-Size="0.8em" ForeColor="#333333"></LabelStyle>
- <VerbStyle Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333">
- </VerbStyle>
- <ErrorStyle Font-Size="0.8em"></ErrorStyle>
- <EmptyZoneTextStyle Font-Size="0.8em" ForeColor="#333333"></EmptyZoneTextStyle>
- <ZoneTemplate>
- <asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" />
- <asp:LayoutEditorPart ID="LayoutEditorPart1" runat="server" />
- <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" runat="server" />
- <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
- </ZoneTemplate>
- <EditUIStyle Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333">
- </EditUIStyle>
- <HeaderStyle BackColor="#D1DDF1" Font-Bold="True" Font-Size="0.8em" ForeColor="#333333">
- </HeaderStyle>
- <HeaderVerbStyle Font-Bold="False" Font-Size="0.8em" Font-Underline="False" ForeColor="#333333">
- </HeaderVerbStyle>
- <InstructionTextStyle Font-Size="0.8em" ForeColor="#333333">
- </InstructionTextStyle>
- </asp:EditorZone>
- # <ZoneTemplate>
- # <asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" />
- # <asp:LayoutEditorPart ID="LayoutEditorPart1" runat="server" />
- # <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" runat="server" />
- # <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
- # </ZoneTemplate>
在web.config里添加如下代码
- <system.web>
- <webParts>
- <personalization>
- <authorization>
- <allow users="*" verbs="enterSharedScope"/>
- </authorization>
- </personalization>
- </webParts>
- </system.web>
- if (this.WebPartManager1.Personalization.Scope == PersonalizationScope.User && this.WebPartManager1.Personalization.CanEnterSharedScope)
- {
- this.WebPartManager1.Personalization.ToggleScope();
- }