转:http://vickynuli.blog.163.com/blog/static/180438492201281434249486/
在网上找到篇文章,自定义快速启动栏和顶部链接栏,以下为代码,根据文章的思路,需要两个方法(个人觉得这两个方法很蠢),首先在页面上放两个treeview 和四个文本框,两个按钮(一个是对顶部链接栏有效,另一个是对快速启动栏有效),
首先咱们在load事件里面把快速启动栏和顶部链接栏分别在TreeView下面显示。
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Navigation;
using System.Web.UI.WebControls;
namespace spInfo.Layouts
{
public partial class secondaryDirectory : LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SPWeb web = SPContext.Current.Web;
SPNavigationNodeCollection topNav = web.Navigation.TopNavigationBar;
SPNavigationNodeCollection qucikNav = web.Navigation.QuickLaunch;
topNavTreeView.Nodes.Add(new TreeNode("Top Link Bar Links"));
quickLaunchTreeView.Nodes.Add(new TreeNode("Quick Launch Links"));
RecurseNodes(topNav, topNavTreeView.Nodes[0].ChildNodes);
RecurseNodes(qucikNav, quickLaunchTreeView.Nodes[0].ChildNodes);
topNavTreeView.ExpandAll();
quickLaunchTreeView.ExpandAll();
}
}
/// <summary>
/// 把主导航值传进来,树视图显示
/// </summary>
/// <param name="nodes">导航</param>
/// <param name="treeNodes">树</param>
private void RecurseNodes(SPNavigationNodeCollection nodes, TreeNodeCollection treeNodes)
{
foreach (SPNavigationNode node in nodes)
{
TreeNode treeNode = new TreeNode();
treeNode.Text = node.Title;
treeNode.ToolTip = node.Url;
treeNode.ShowCheckBox = true;
treeNode.Checked = node.IsExternal;
treeNode.Value = node.Id.ToString();
treeNodes.Add(treeNode);
RecurseNodes(node.Children, treeNode.ChildNodes);
}
}
/// <summary>
/// 顶部链接栏
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void addTopButton_Click(object sender, EventArgs e)
{
//string vaaa = "";
//foreach (TreeNode n in topNavTreeView.CheckedNodes)
//{
// vaaa += n.Value + ",";
//}
SPWeb web = SPContext.Current.Web;
SPNavigationNode node = new SPNavigationNode(topNavTitleTextBox.Text, topNavUrlTextBox.Text, topNavIsExternalCheckBox.Checked);
if (topNavTreeView.SelectedNode == topNavTreeView.Nodes[0])
{
web.Navigation.TopNavigationBar.AddAsLast(node);
}
else
{
int parentId = 0;
foreach (TreeNode n in topNavTreeView.CheckedNodes)
{
parentId += Convert.ToInt32(n.Value);
}
//parentId = int.Parse(topNavTreeView.SelectedNode.Value);
web.Navigation.GetNodeById(parentId).Children.AddAsLast(node);
}
if (topNavOpenInNewWindowCheckBox.Checked)
{
node.Properties["Target"] = "_blank";
node.Update();
}
topNavTreeView.ExpandAll();
quickLaunchTreeView.ExpandAll();
}
/// <summary>
/// 快速启动链接栏
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnQuick_Click(object sender, EventArgs e)
{
SPWeb web = SPContext.Current.Web;
SPNavigationNode node = new SPNavigationNode(tbQTitle.Text, tbQUrl.Text, CheckBox3.Checked);
if (quickLaunchTreeView.SelectedNode == quickLaunchTreeView.Nodes[0])
{
web.Navigation.QuickLaunch.AddAsLast(node);
}
else
{
int parentId = 0;
foreach (TreeNode n in quickLaunchTreeView.CheckedNodes)
{
parentId += Convert.ToInt32(n.Value);
}
//parentId = int.Parse(topNavTreeView.SelectedNode.Value);
web.Navigation.GetNodeById(parentId).Children.AddAsLast(node);
}
if (CheckBox4.Checked)
{
node.Properties["Target"] = "_blank";
node.Update();
}
topNavTreeView.ExpandAll();
quickLaunchTreeView.ExpandAll();
}
}
}
HTML代码(比较难看)
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<div id="mdA">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td rowspan="6">
<asp:TreeView ID="topNavTreeView" ons runat="server">
</asp:TreeView>
</td>
<td>
Title:<asp:TextBox ID="topNavTitleTextBox" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td>
Url:<asp:TextBox ID="topNavUrlTextBox" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="topNavIsExternalCheckBox" runat="server" Text="链接"
/>
</td>
</tr>
<tr>
<td><asp:CheckBox ID="topNavOpenInNewWindowCheckBox" runat="server" Text="在新窗口打开"
/>
</td>
</tr>
<tr>
<td>
<asp:Button ID="addTopButton" runat="server" onclick="addTopButton_Click" Text="添加到节点" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td rowspan="6">
<asp:TreeView ID="quickLaunchTreeView" runat="server">
</asp:TreeView>
</td>
<td> Title:<asp:TextBox ID="tbQTitle" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td> Url:<asp:TextBox ID="tbQUrl" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td><asp:CheckBox ID="CheckBox3" runat="server" Text="链接"
/>
</td>
</tr>
<tr>
<td><asp:CheckBox ID="CheckBox4" runat="server" Text="在新窗口打开"
/>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnQuick" runat="server" onclick="btnQuick_Click" Text="添加到快速启动栏" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</div>
</asp:Content>
- 根据权限显示隐藏SharePoint 2010快速启动栏的链接
转:http://www.360sps.com/Item/ShowAndHiddenLink.aspx 在SharePoint 2010的快速启动栏中可以根据权限来显示或隐藏列表.库.网站的链接,如果 ...
- LXPanel自定义添加应用程序到快速启动栏
LXPanel是Linux下LXDE项目的一个桌面面板软件.我一开始接触的时候,对于自己自定义的程序到快速启动栏绕了很多弯路,这里记录下,防止以后自己忘了.还有一点就是很多时候,panel下的应用程序 ...
- Win7快速启动栏
http://jingyan.baidu.com/article/456c463bbc1d140a583144cf.html 1. 在任务栏上右键 -> 工具栏 -> 新建工具栏. 在 ...
- win7和win8如何设置快速启动栏
a.在任务栏上右键 -> 工具栏 -> 新建工具栏 -> 跳出选择文件夹对话框,在文件夹里面(光标山洞处)输入这个路径,然后按回车: %userprofile%\AppData\Ro ...
- win7 系统如何设置快速启动栏
a.在任务栏上右键 -> 工具栏 -> 新建工具栏 -> 跳出选择文件夹对话框,在文件夹里面(光标山洞处)输入这个路径,然后按回车: %userprofile%\AppData\Ro ...
- win7 下恢复“经典任务栏”/“快速启动栏”,关闭“窗口自动最大化” -摘自网络
1.自动放大窗口 鼠标把窗口拖到屏幕边缘时,win7会自做聪明的把窗口放大,有时候这个很烦人. 解决办法: 运行“REGEDIT”打开注册表,找到 “HKEY_CURRENT_USER\Control ...
- Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单
{================================================================= 功 能: 创建 桌面.发送到....快速启动栏.开始菜单.程序菜单 ...
- 如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏)
问题:如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏) 在XP下,添加方式是直接把快捷方式复制到%appdata%\Microsoft\Internet Explorer\Qui ...
- vc++ windows 快速启动栏创建快捷方式
创建快速启动栏 在windows软件开发中,软件安装过程中总是需要在快速启动栏创建快捷方式,下面介绍一种快速启动栏创建快捷方式的方法,具体代码如下:(该方法不支持win10,目前还没有找到win10的 ...
随机推荐
- python学习笔记18(UliPad 初体验)
在windows下安装配置Ulipad 由于UliPad 是由wxPython 开发的,所以,需要先安装wxPython . wxPython下载地址: http://www.wxpython.org ...
- 基于Ogre的DeferredShading(延迟渲染)的实现以及应用
http://blog.sina.com.cn/s/blog_458f871201017i06.html 这篇文章写的不错,从比较宏观的角度说了下作者在OGRE中实现的延迟渲染
- Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
[转载] :http://my.oschina.net/rouchongzi/blog/171046 Java之类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指 ...
- VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
升级vs2010到vs2012,突然发现build出来的应用程序无法运行,提示“不是有效的 win32 应用程序” or “not a valid win32 application”. 参考CSDN ...
- asp.net中@ Import 命令的使用
@ Import 将命名空间显式导入到 ASP.NET 应用程序文件(如网页.用户控件.母版页或 Global.asax 文件)中,同时使导入的命名空间的所有类和接口可用于文件.导入的命名空间可以是 ...
- Apache URL rewrite 配置
下面是Apache的配置过程,可以参考下:1.httpd.conf配置文件中加载了mod_rewrite.so模块,使用虚拟主机 #LoadModule rewrite_module modules/ ...
- [Firefly引擎][学习笔记一][已完结]带用户验证的聊天室
原地址:http://bbs.9miao.com/thread-44571-1-1.html 前言:早在群里看到大鸡蛋分享他们团队的Firefly引擎,但一直没有时间去仔细看看,恰好最近需要开发一个棋 ...
- Unique Binary Search Trees II
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...
- poj 2265 Bee Maja
题目的意思很容易理解.就是找两个不同坐标的对应关系.下面的思路转自POJ的论坛 首先,记由1到2的方向记为2,1到3的方向记为3……1到7的方向记为7,他们分别是:(0,1),(-1,1),(-1,0 ...
- SGU 101
SGU 101,郁闷,想出来算法,但是不知道是哪个地方的问题,wa在第四个test上. #include <iostream> #include <vector> #inclu ...