使用SharePoint Designer,将左侧的导航修改为Treeview

根据以下博客内容,我使用SharePoint Designer,将左侧的导航修改为了Treeview。
       How to create custom navigation menu in SharePoint with XML data source

 1. 生成一个XMLDataSource用xml文件MyNavSource.xml,上载到SharePoint网站的文档库中。内容如下:

ContractedBlock.gif ExpandedBlockStart.gif MyNavSource.xml
<?xml version="1.0" encoding="utf-8" ?>
<Menu name="MyNavigation">
    
<Folder name="Technical Links">
        
<Node name="Microsoft" url="http://www.microsoft.com"></Node>
        
<Node name="MSDN" url="http://www.msdn.com"></Node>
        
<Node name="TechNet" url="http://technet.microsoft.com"></Node>
    
</Folder>
    
<Folder name="Links">
        
<Node name="My Blog" url="http://blogs.msdn.com/matjazperpar"></Node>
        
<Node name="Microsoft Slovenia" url="http://www.microsoft.com/slovenija"></Node>
    
</Folder>
</Menu>

 

2. 使用SharePoint Designer,打开需要编辑的网站。
3. 打开“Data Source Library”任务板,在“XML Files”下点击“Add an XML file...”,选择上载的XML文件,会看到在“XML Files”下出现了“MyNavSource.xml”。


4. 打开Defaule.master文件,找到ID为“PlaceHolderLeftNavBar”的“ContentPlaceHolder”。光标定位在其下面的h3的定义后面(即</h3>后),然后在“MyNavSource.xml”上点击右键选择“Insert Data Source Control”。将在</h3>后插入以下代码:
                 < SharePoint:SPXmlDataSource  runat ="server"  id ="SPXmlDataSource1" >
                    
< DataFileParameters >
                        
< asp:Parameter  Name ="FileName"  DefaultValue ="MyNavSource.xml" />
                        
< asp:Parameter  Name ="FilePath"  DefaultValue ="Document%20Library" />
                    
</ DataFileParameters >
                
</ SharePoint:SPXmlDataSource >

5. 找到ID为“QuickLaunchMenu”的SharePoint:AspMenu,修改为
      <asp:TreeView id="QuickLaunchMenu" DataSourceId="SPXmlDataSource1" runat="server" Width="124px">
6. 选择这个TreeView, 打开Common TreeView Tasks对话框,点击“Edit TreeNode Databingdings...”,打开“TreeView DataBingdings Editor”对话框。


7. 分别为Menu、Folder、Node添加数据绑定,TextField属性的数据为name, NavigateUrlField属性的数据为url(只有Node有)。点击OK,并保存master页。
8. 浏览该网站的主页,就会发现该主页的左侧导航已改变,虽然有些丑陋,但是实现了我们的功能。如果想让它变得更美丽,就需要一点一点修正它的风格了。


值得注意的是,View All Site Conent链接的页面viewlsts.aspx,没有使用Default.master,因此该页面没有任何变化。

转载于:https://www.cnblogs.com/Wangyong-Wen/archive/2009/09/18/1569155.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以的。为了实现这个功能,你需要先在该单元格中创建一个下拉框,并将该下拉框与单元格进行绑定。下面是一个简单的示例代码,供你参考: ```python import tkinter as tk from tkinter import ttk # 创建窗口对象 window = tk.Tk() # 创建Treeview对象 tree = ttk.Treeview(window) # 添加Treeview列 tree["columns"] = ("name", "age", "gender") # 设置Treeview列标题 tree.column("name", width=100, anchor="center") tree.column("age", width=100, anchor="center") tree.column("gender", width=100, anchor="center") tree.heading("name", text="Name") tree.heading("age", text="Age") tree.heading("gender", text="Gender") # 添加Treeview数据 tree.insert("", tk.END, text="001", values=("John Doe", 30, "Male")) tree.insert("", tk.END, text="002", values=("Jane Doe", 25, "Female")) tree.insert("", tk.END, text="003", values=("Bob Smith", 40, "Male")) # 创建下拉框 gender_options = ["Male", "Female"] gender_var = tk.StringVar() gender_combobox = ttk.Combobox(tree, textvariable=gender_var, values=gender_options) # 将下拉框与Treeview单元格绑定 def on_treeview_click(event): row_id = tree.identify_row(event.y) column_id = tree.identify_column(event.x) if row_id and column_id == "#2": # 第2列为Gender列 cell_rect = tree.bbox(row_id, column_id) gender_combobox.place(x=cell_rect[0], y=cell_rect[1], width=cell_rect[2]-cell_rect[0], height=cell_rect[3]-cell_rect[1]) gender_combobox.current(gender_options.index(tree.item(row_id)["values"][2])) gender_combobox.focus_set() gender_combobox.bind("<FocusOut>", on_combobox_focus_out) gender_combobox.bind("<Return>", on_combobox_focus_out) gender_combobox.bind("<Escape>", on_combobox_escape) def on_combobox_focus_out(event): row_id = tree.focus() tree.set(row_id, "#2", gender_var.get()) gender_combobox.place_forget() def on_combobox_escape(event): gender_combobox.current(gender_options.index(tree.item(tree.focus())["values"][2])) gender_combobox.place_forget() tree.bind("<Button-1>", on_treeview_click) # 显示Treeview tree.pack() # 进入消息循环 window.mainloop() ``` 在这个示例代码中,我们创建了一个Treeview对象,并添加了一些列和数据。我们还创建了一个下拉框,并将其与Treeview单元格绑定。当用户单击Treeview的Gender列时,我们会在该单元格上显示下拉框。当用户从下拉框中选择了一个选项后,我们会将该值设置到Treeview中,并将下拉框隐藏起来。 如果你想将某个单元格改为下拉框,只需修改示例代码中的`column_id`变量即可。例如,如果你想将第3行第2列改为下拉框,将`column_id`变量的值改为`"#2"`即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值