一个简单的下拉菜单webpart
昨天在MSDN看到使用 JavaScript 创建 FrontPage 下拉菜单,可以很容易的将其转换为一个简单的webpart .
代码如下:
当然还要指定其JS 文件以及CSS 文件的位置:
在Manifest.xml指定资源:
然后就可以一个webpart,将其部署完成以后,我们可以看到如下一个简单的下拉菜单:
代码如下:
Dim includeScript As String
Dim myOutput As String = ""
Private Const ClientSideFileName As String = "mymenu.js"
Private Const CSSFileName As String = "mymenu.css"
Private Const ClientSideCodeIncludeScriptKey As String = "ClientSideCodeIncludeScriptMenu"
Private Const ClientSideCodeIncludeCSSKey As String = "ClientSideCodeIncludeCSS"
Private Const IncludeScriptFormat As String = "<script language=""{0}"" src=""{1}{2}""></script>"
Private Const IncludeCSSFormat As String = "<LINK REL=""StyleSheet"" HREF=""{0}"">"
Public Sub New()
AddHandler Me.PreRender, AddressOf My_PreRender
End Sub
Sub My_PreRender(ByVal s As Object, ByVal e As EventArgs)
If Not (Page.IsClientScriptBlockRegistered(ClientSideCodeIncludeScriptKey)) Then
Dim Location As String = "/wpresources/SPSMenu/"
myOutput = Location
includeScript = String.Format(IncludeScriptFormat, "javascript", Location, ClientSideFileName)
Page.RegisterClientScriptBlock(ClientSideCodeIncludeScriptKey, includeScript)
End If
If Not (Page.IsClientScriptBlockRegistered(ClientSideCodeIncludeCSSKey)) Then
Dim Location As String = "/wpresources/SPSMenu/"
myOutput = Location
includeScript = String.Format(IncludeCSSFormat, Location & CSSFileName)
Page.RegisterClientScriptBlock(ClientSideCodeIncludeCSSKey, includeScript)
End If
End Sub
Dim myOutput As String = ""
Private Const ClientSideFileName As String = "mymenu.js"
Private Const CSSFileName As String = "mymenu.css"
Private Const ClientSideCodeIncludeScriptKey As String = "ClientSideCodeIncludeScriptMenu"
Private Const ClientSideCodeIncludeCSSKey As String = "ClientSideCodeIncludeCSS"
Private Const IncludeScriptFormat As String = "<script language=""{0}"" src=""{1}{2}""></script>"
Private Const IncludeCSSFormat As String = "<LINK REL=""StyleSheet"" HREF=""{0}"">"
Public Sub New()
AddHandler Me.PreRender, AddressOf My_PreRender
End Sub
Sub My_PreRender(ByVal s As Object, ByVal e As EventArgs)
If Not (Page.IsClientScriptBlockRegistered(ClientSideCodeIncludeScriptKey)) Then
Dim Location As String = "/wpresources/SPSMenu/"
myOutput = Location
includeScript = String.Format(IncludeScriptFormat, "javascript", Location, ClientSideFileName)
Page.RegisterClientScriptBlock(ClientSideCodeIncludeScriptKey, includeScript)
End If
If Not (Page.IsClientScriptBlockRegistered(ClientSideCodeIncludeCSSKey)) Then
Dim Location As String = "/wpresources/SPSMenu/"
myOutput = Location
includeScript = String.Format(IncludeCSSFormat, Location & CSSFileName)
Page.RegisterClientScriptBlock(ClientSideCodeIncludeCSSKey, includeScript)
End If
End Sub
Protected Overrides Sub CreateChildControls()
Controls.Add(New LiteralControl("<table class='navbar' width='250'>"))
Controls.Add(New LiteralControl("<tr>"))
Controls.Add(New LiteralControl("<td class='menuNormal' width='200' onmouseover='expand(this);' onmouseout='collapse(this);'>"))
Controls.Add(New LiteralControl("<p>文档库Document Library</p>"))
Controls.Add(New LiteralControl("<div class='menuNormal' width='155'>"))
Controls.Add(New LiteralControl("<table class='menu' width='155'>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Company</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>priority</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Research</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Documents</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Report</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Product</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Other Files</a></td></tr>"))
Controls.Add(New LiteralControl("</table>"))
Controls.Add(New LiteralControl("</div>"))
Controls.Add(New LiteralControl("</td>"))
Controls.Add(New LiteralControl("</tr>"))
Controls.Add(New LiteralControl("</table>"))
End Sub
Controls.Add(New LiteralControl("<table class='navbar' width='250'>"))
Controls.Add(New LiteralControl("<tr>"))
Controls.Add(New LiteralControl("<td class='menuNormal' width='200' onmouseover='expand(this);' onmouseout='collapse(this);'>"))
Controls.Add(New LiteralControl("<p>文档库Document Library</p>"))
Controls.Add(New LiteralControl("<div class='menuNormal' width='155'>"))
Controls.Add(New LiteralControl("<table class='menu' width='155'>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Company</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>priority</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Research</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Documents</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Report</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Product</a></td></tr>"))
Controls.Add(New LiteralControl("<tr><td class='menuNormal'><a HREF='#' class='menuitem'>Other Files</a></td></tr>"))
Controls.Add(New LiteralControl("</table>"))
Controls.Add(New LiteralControl("</div>"))
Controls.Add(New LiteralControl("</td>"))
Controls.Add(New LiteralControl("</tr>"))
Controls.Add(New LiteralControl("</table>"))
End Sub
<?xml version="1.0"?>
<!-- You need only one manifest per CAB project for Web Part Deployment.-->
<!-- This manifest file can have multiple assembly nodes.-->
<WebPartManifest xmlns="http://schemas.microsoft.com/WebPart/v2/Manifest">
<Assemblies>
<Assembly FileName="SPSMenu.dll">
<!-- Use the <ClassResource> tag to specify resources like image files or JScript files that your Web Parts use. -->
<!-- Note that you must use relative paths when specifying resource files. -->
<ClassResources>
<ClassResource FileName="mymenu.css"/>
<ClassResource FileName="mymenu.js"/>
</ClassResources>
<SafeControls>
<SafeControl
Namespace="SPSMenu"
TypeName="*"
/>
</SafeControls>
</Assembly>
</Assemblies>
<DwpFiles>
<DwpFile FileName="SPSMenu.dwp"/>
</DwpFiles>
</WebPartManifest>
<!-- You need only one manifest per CAB project for Web Part Deployment.-->
<!-- This manifest file can have multiple assembly nodes.-->
<WebPartManifest xmlns="http://schemas.microsoft.com/WebPart/v2/Manifest">
<Assemblies>
<Assembly FileName="SPSMenu.dll">
<!-- Use the <ClassResource> tag to specify resources like image files or JScript files that your Web Parts use. -->
<!-- Note that you must use relative paths when specifying resource files. -->
<ClassResources>
<ClassResource FileName="mymenu.css"/>
<ClassResource FileName="mymenu.js"/>
</ClassResources>
<SafeControls>
<SafeControl
Namespace="SPSMenu"
TypeName="*"
/>
</SafeControls>
</Assembly>
</Assemblies>
<DwpFiles>
<DwpFile FileName="SPSMenu.dwp"/>
</DwpFiles>
</WebPartManifest>
然后就可以一个webpart,将其部署完成以后,我们可以看到如下一个简单的下拉菜单: