推荐阅读
Windows 媒体创建工具和使用方法实例教程
Windows 媒体创建工具是一款由微软官方提供的且一直以来都在官网免费提供的升级到Windows 10 和创建引导U 盘的工具。选择立刻下载工具 不要选择立刻更新,因为立刻更新将会下载的是Windows10 升级助理,助理我一般是微软发布大版本推送以后用的,比直接推送快且安装完造成的BUG更少。下载完,双击运行,会请求 UAC,同意。稍作等待,同意一个协议。选择第一个选项,升级这台电脑。
在Excel 2013中如何使工作薄自动滚屏的方法
当工作表中的数据很多,在一屏中无法显示完整时,用户可以通过拖动程序窗口中的滚动条来滚动屏幕查看数据。实际上,用户。 (2)此时移动鼠标,指针将会变为方向箭头,屏幕会跟随鼠标的移动而自动滚动,。 提示:鼠标移动范围越大,屏幕滚动的速度就越大。当不再需要屏幕滚动时,按“Esc”键或单击鼠标即可。
Word 2010中让文字竖排的设置方法
在Word 2010中: 其实很简单,进入“页面布局”菜单,点击“文字方向”按钮,选择“垂直”即可。 修改后的效果图如下: 更多相关阅读如何在Word 2010设置、修改及删除文档密码图文详解Word2010制作下拉列表的方法Word 2010书法字帖文字排列方式如何设置
word怎么插入并设置不一样的页眉页脚
众所周知页眉和页脚输入的时候是一样的,但有时候就不想让它一样,怎么办呢?这可以使用word分节符使页眉页脚不一样。接下来小编举例简单的例子告诉大家word文档插入不一样页眉的方法。 word文档插入不一样页眉的方法 第一步:插入页眉页脚 第二步:插入分节符。将鼠标光标放在你需要让上下页眉不一样的页面上,例如你想让第二页和第三页开始不一样,就把光标放在第二页上,然后插入分节符。 第三步:转到页眉页脚设计菜单栏,将鼠标光标放在分节符的地方,分节符插在第二页和第三页之间,就把鼠标放在第三页页眉上,取消链接到前一条页眉选项,上下页眉就可以不一样了。
最新发布
SharePoint 2016 必备组件离线安装介绍
SharePoint 必备组件安装,一直以来都是SharePoint安装过程中的最大的坑,尤其是不能联网的服务器。博主在这里简单介绍一下离线安装过程,并附组件包下载以及安装命令,并且在windows server 2016中亲测可用,其他版本服务器请自行测试。 1、组件介绍:• Web Server (IIS) Role• Microsoft SQL Server 2012 Native Client• Microsoft ODBC Driver 11 for SQL Server• Microsoft Sync Framework Runtime v1.0 SP1 (x64)• Windows Server AppFabric• Microsoft Identity Extensions• Microsoft Information Protection and Control Client 2.1• Microsoft WCF Data Services 5.6
SharePoint 2016 入门视频教程 免费下载
有朋友让自己录一些SharePoint的入门视频,之前没有太多时间,一个巧合的机会收到CSDN学院的邮件,可以在CSDN上发布视频教程,自己就录了一些。说起录视频也是蛮辛苦的,每天下班吃完饭要哄一会儿孩子,九点左右打开电脑去厨房开始写ppt,查一些资料,然后自己先做一下实验,觉得没问题了再开始录制。每天完成也要12点以后了,虽然很辛苦还是一直坚持下来,很多朋友跟我说免费,自己也真的想过,不过生活开销也大,所以还是没有免费。 视频主要就是SharePoint的入门,很多东西都是博客里之前介绍过的,如果介意收费的就可以直接在博客里找相关的图文教程,霖雨觉得图文教程也是很详尽的,呵呵。不论视频教程是否有没有很多人购买,自己都希望做点自己喜欢的事儿,把技术分享给大家。或许有些人觉得很功利,其实,几个朋友吃一顿饭需要多少大洋?装个环境遇到问题一周解决不了又值多少大洋?我觉得有些时候付出点还是会有收获的,呵呵。好了,不嘚瑟了,下面简单介绍一下入门教程的目录,而且在接下来的时间里,自己还会继续录制开发入门教程,希望大家能有喜欢。 视频教程目录 •课程简介 •SharePoint 平台发展及简介 •SharePoint 2016 安装简介 •SharePoint 2016 站点功能简介 •SharePoint 2016 站点功能之回收站 •SharePoint 2016 站点功能之域名配置 •SharePoint 2016 库功能简介 •SharePoint 2016 库功能简介问题补充 •SharePoint 2016 字段类型简介 •SharePoint 2016 计算值字段简介 •SharePoint 2016 内容类型简介 •SharePoint 2016 权限体系介绍 •SharePoint 2016 如何创建及使用母版页 •SharePoint 2016 如何创建及使用页面布局和页面 •SharePoint 2016 定制个性化列表表单 •SharePoint 2016 数据视图的简单搜索 •SharePoint 2016 站点的备份和还原 •SharePoint 2016 遇到错误如何进行排错 教程的目录是这样的,自己在录制过程中,觉得有意义的东西,还会插入进来,不定时更新。 视频地址:http://edu.csdn.net/course/detail/3333
SharePoint 如何自定义城市和区域字段
最近有这么一个需求,就是用到中国的各种行政区,然后还是三级联动,就琢磨写这么一个字段。然后,觉得挺有意义的,写字段的过程也有点心得,就想到拿到博客里分享给大家,一起看看。 1、 创建字段的解决方案,包括:字段类、字段控件类、字段控件的前台文件、字段的描述文件、城市和区域的数据列表、字段的Feature和其中所需要的JavaScript库和文件。 2、 在字段的前台控件上,添加我们需要的控件,当在显示视图(DispForm)的时候,只有一个Label控件用来显示值,除此之外的视图(NewForm和EditForm)的时候,有一个Label控件用来输入下拉框等的html,一个TextBox控件用来保存和修改值,一个隐藏字段用来存一个Guid,防止一个列表加多个字段时,控件的Id有重复。 3、 初始化控件的核心代码,主要包括输入城市和区域下拉框控件的Html代码,并且绑定相关的事件。 protected override void CreateChildControls() { base.CreateChildControls(); if (this.Field != null) { this.lbValue = (Label)TemplateContainer.FindControl("lbValue"); this.tbValue = (TextBox)TemplateContainer.FindControl("tbValue"); this.hfValue = (HiddenField)TemplateContainer.FindControl("hfValue"); this.lbValueResult = (Label)TemplateContainer.FindControl("lbValueResult"); } if (this.ControlMode == SPControlMode.Display) { if (lbValueResult != null) { lbValueResult.Text = this.ItemFieldValue.ToString(); } } else { string myGuid = Guid.NewGuid().ToString().Replace("-", ""); string scriptLink = "<script type='text/javascript' src='/_layouts/15/LinyuCityField/Script.js'></script><script type='text/javascript' src='/_layouts/15/LinyuCityField/jquery-1.7.1.js'></script>"; string scriptInit = @"<script type='text/javascript'>$(document).ready(function(){ setInterval(syncValue,1000); initSelect('" + myGuid + @"province','0'); $('#" + myGuid + @"province').change(function(){ var vv = $(this).val(); //if(vv=='11'||vv=='12'||vv=='31'||vv=='50'){$('#" + myGuid + @"district').hide();}else{$('#" + myGuid + @"district').show();} $('#" + myGuid + @"city').empty(); initSelect('" + myGuid + @"city',vv); $('#" + myGuid + @"district').empty(); }); $('#" + myGuid + @"city').change(function(){ var vv = $(this).val(); var lsvv=vv.substring(0,2); //if(lsvv=='11'||lsvv=='31'||lsvv=='12'||lsvv=='50'){$('#" + myGuid + @"district').hide();}else{$('#" + myGuid + @"district').show();} $('#" + myGuid + @"district').empty(); initSelect('" + myGuid + @"district',vv); }); });</script>"; string scriptInit2 = @"<script type='text/javascript'>$(document).ready(function(){ setInterval(syncValue,1000); $('#" + myGuid + @"province').change(function(){ var vv = $(this).val(); //if(vv=='11'||vv=='12'||vv=='31'||vv=='50'){$('#" + myGuid + @"district').hide();}else{$('#" + myGuid + @"district').show();} $('#" + myGuid + @"city').empty(); initSelect('" + myGuid + @"city',vv); $('#" + myGuid + @"district').empty(); }); $('#" + myGuid + @"city').change(function(){ var vv = $(this).val(); var lsvv=vv.substring(0,2); //if(lsvv=='11'||lsvv=='31'||lsvv=='12'||lsvv=='50'){$('#" + myGuid + @"district').hide();}else{$('#" + myGuid + @"district').show();} $('#" + myGuid + @"district').empty(); initSelect('" + myGuid + @"district',vv); }); });</script>"; Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptLink", scriptLink); string selectHtml = string.Empty; if (this.ControlMode == SPControlMode.New) { Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptInit", scriptInit); selectHtml = "<select id='" + myGuid + "province'></select><select id='" + myGuid + "city'></select><select id='" + myGuid + "district'></select>"; } else { string fieldValue = this.ItemFieldValue.ToString(); string[] filedValues = fieldValue.Split('-'); selectHtml = initEditHtml(myGuid, fieldValue); Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptInit2", scriptInit2); } if (hfValue != null) hfValue.Value = myGuid; if (lbValue != null) lbValue.Text = selectHtml; } } 4、 编辑页面时初始化控件的代码,包括省、城市、区域。 public string initEditHtml(string myGuid, string fieldValue) { string html = string.Empty; string[] fvs = fieldValue.Split('-'); string province = string.Empty; string city = string.Empty; string district = string.Empty; using (SPSite site = new SPSite(SPContext.Current.Site.ID)) { using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID)) { SPList list = web.Lists.TryGetList("CityDataSourse"); SPQuery query1 = new SPQuery(); SPQuery query2 = new SPQuery(); SPQuery query3 = new SPQuery(); SPListItem item1; SPListItem item2; SPListItem item3; switch (fvs.Length) { case 1: query1.Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + fvs[0] + "</Value></Eq></Where>"; item1 = list.GetItems(query1)[0]; province = getOptions(item1["ParentId"].ToString(), item1["Title"].ToString()); break; case 2: query1.Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + fvs[0] + "</Value></Eq></Where>"; item1 = list.GetItems(query1)[0]; province = getOptions(item1["ParentId"].ToString(), item1["Title"].ToString()); query2.Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + fvs[1] + "</Value></Eq></Where>"; item2 = list.GetItems(query2)[0]; city = getOptions(item2["ParentId"].ToString(), item2["Title"].ToString()); break; case 3: query1.Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + fvs[0] + "</Value></Eq></Where>"; item1 = list.GetItems(query1)[0]; province = getOptions(item1["ParentId"].ToString(), item1["Title"].ToString()); query2.Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + fvs[1] + "</Value></Eq></Where>"; item2 = list.GetItems(query2)[0]; city = getOptions(item2["ParentId"].ToString(), item2["Title"].ToString()); query3.Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + fvs[2] + "</Value></Eq></Where>"; item3 = list.GetItems(query3)[0]; district = getOptions(item3["ParentId"].ToString(), item3["Title"].ToString()); break; } } } html = "<select id='" + myGuid + "province'>" + province + "</select><select id='" + myGuid + "city'>" + city + "</select><select id='" + myGuid + "district'>" + district + "</select>"; return html; } 5、 前台JavaScript的原理,根据当前选项的ID获取下一级控件并初始化,Id是下一级控件的Id后缀部分,vv也就是关联的ParentId。 http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html function initSelect(Id, vv) { try { var hfId = $("#DefaultCustomFieldControlZone input[type='hidden']").val(); if (vv == "11" || vv == "12" || vv == "31" || vv == "50") { $("#" + hfId + "district").hide(); } else { $("#" + hfId + "district").show(); } var mycontext = new SP.ClientContext.get_current(); var mysite = mycontext.get_web(); var query = new SP.CamlQuery(); query.set_viewXml("<View><Query><Where><Eq><FieldRef Name='ParentId' /><Value Type='Text'>" + vv + "</Value></Eq></Where></Query></View>"); var mylist = mysite.get_lists().getByTitle('CityDataSourse'); myitem = mylist.getItems(query); mycontext.load(myitem, 'Include(Title,Id,CityId,Code)'); mycontext.executeQueryAsync(Function.createDelegate(this, function () { try { $("#" + Id + " option").remove(); var listsE = myitem.getEnumerator(); while (listsE.moveNext()) { $("#" + Id).append("<option value='" + listsE.get_current().get_item("CityId") + "'>" + listsE.get_current().get_item("Title") + "</option>"); } } catch (ex) { console.log(ex) } }), Function.createDelegate(this, function () { alert("failed") })); } catch (ex) { } } 6、 初始化行政区,根据国家统计局的最新县及县以上行政区划代码,用jquery获取DOM元素,并且格式化成我需要的格式,放到列表实例里面使用,这样激活解决方案以后,就有数据源了。
SharePoint 文档库的新功能简介
今天,重装了一下SharePoint 2016,想多了解了解,看到一些自己平时没注意的功能,或者新的功能,分享一下给大家。 1、界面上操作的变换,多了一排按钮,更像SharePoint Online了,呵呵;这一排按钮可以新建、上传、同步、共享等操作; 2、共享功能的界面有了新的变化,看起来更加简洁了,把查看权限和邀请分开了,如下图: 2013中界面: 2016中界面: 3、多了打开链接在移动设备,我们可以点击这个按钮,然后出一个二维码,用移动设备扫面就可以了,很有意思的功能;
SharePoint 如何配置应用程序商店
最近碰到一个新的需求,就是要给SharePoint配置应用程序商店,挺有意思的,就简单的配置和记录了一下,分享给大家。 其实应用程序商店之前感觉很鸡肋,但是用起来还是不错的。不喜勿喷,呵呵。 首先需要配置DNS 1、在DNS管理端添加一个新区域,为了添加泛域名。 2、添加区域的向导,下一步就可以了; 3、如下图,不需要改什么; 4、选择第二个选项,下一步就可以了;
SharePoint 安装 Cumulative Update for Service Bus 1.0 (KB2799752)报错
SharePoint 服务器场安装workflow manager 1.0的时候,报下面的错误,搜了很多博客都没有解决。然后,灵机一动,下载了一个英文版的累计更新包,安装成功了。 SharePoint 配置workflow manager 1.0的过程中,需要按照顺序安装以下软件: 而安装WorkflowManagerRefresh的前提条件必须安装ServiceBus的累计更新(KB2799752)。我在安装累计更新的过程中报如下错误: 查了很多文章,发现可以使用PowerShell(windows)命令进行安装,但是依旧报错。怀疑是累计更新补丁的问题,也下载了多次,最后不得已尝试一下英文版吧,结果用PowerShell直接就装上了。安装完毕,思前想后,觉得可能Service Bus本身安装的版本就是英文版,所以累计更新也需要英文版,希望大家遇到类似的情况要注意。 安装补丁的PowerShell命令:Start-Process -FilePath "C:\ServiceBus\ServiceBus-KB2799752-x64-EN.exe" -ArgumentList "/passive" -Wait -PassThru 安装界面的截图,这里是Windows PowerShell,不是SharePoint的命令行工具,注意! 结束语 累计更新的语言应该由安装包决定的,而不是操作系统是中文版,就得装中文版,算是一个教训吧。内容比较简单,希望能够给遇到类似问题的朋友,带来一定的帮助。
SharePoint 切换用户的小技巧
从SharePoint 2013开始,SharePoint就已经去掉了”Sign in as Different User”这个功能,也就是无法切换用户登录。当然,后来我们通过修改CONTROLTEMPLATES目录下的Welcome.ascx控件解决了这个问题。 但是,如果我们的机器已经加入到和SharePoint同一个AD域中,而且已经信任站点进行了自动登录,这个切换注销以后,依然可以自动登陆上去,我们还是无法进行用户切换,这里,我们就可以利用一下windows的一个小功能解决这一问题。 添加切换用户按钮 找到Welcome.ascx控件,位置如下图: 加上这么一段代码 代码<SharePoint:MenuItemTemplate runat="server" ID="ID_LoginAsDifferentUser" Text="<%$Resources:wss,personalactions_loginasdifferentuser%>" Description="<%$Resources:wss,personalactions_loginasdifferentuserdescription%>" MenuGroupId="100" Sequence="100" UseShortId="true"/> 如果没有这个功能,我们可以在浏览器的快捷方式上,按住shift的同时点击鼠标右键,以其他用户打开浏览器,然后输入你想要登陆的账号和密码,就可以了:
SharePoint JavaScript 客户端对象使用视频教程
本次视频教程是为大家介绍如何使用SharePoint JavaScript客户端对象,包括对于站点、列表、文档库、列表项、文件夹、文件和附件等基本对象的操作,同时,为大家举几个简单的应用的例子,让大家更加深刻的理解SharePoint JavaScript客户端对象的适用范围。本次系列课程既使用本地版本的SharePoint环境,同样适用于office 365中的SharePoint Online环境,希望能够对大家入门SharePoint有所帮助。 课程目录 ◦SharePoint JavaScript 对象模型简介 ◦SharePoint JavaScript 操作站点属性 ◦SharePoint JavaScript 操作列表 ◦SharePoint JavaScript 操作列表字段 ◦SharePoint JavaScript 操作列表项目 ◦SharePoint JavaScript 操作文件夹 ◦SharePoint JavaScript 操作列表附件 ◦SharePoint JavaScript 操作文档库文件 ◦SharePoint JavaScript 进行内容展现 ◦SharePoint JavaScript 实现提交表单 ◦SharePoint JavaScript 联动下拉菜单 ◦SharePoint JavaScript 实现筛选功能 ◦SharePoint JavaScript 视图权限控制 课程地址 http://edu.csdn.net/course/detail/4508 同时,还有其他SharePoint视频教程以供大家选择观看,可以点击个人主页或者右侧的视频教程链接即可。 个人主页 http://edu.csdn.net/lecturer/1012 课程简介 本次课程以SharePoint 2016平台为基础,为大家介绍SharePoint工作流,并介绍如何通过SharePoint Designer和Visio进行SharePoint工作流的配置。 你将收获 希望通过本次课程,让大家掌握如何搭建SharePoint 工作流环境,并学会使用SharePoint Designer和Visio配置SharePoint 工作流,以完成基本的工作流配置和使用。 第一章:课程简介 1. 课程简介[ 11:20 ] 2. SharePoint Workflow 工作流示例演示[ 07:55 ] 第二章:SharePoint Workflow 概述 1. SharePoint Workflow 概述[ 07:18 ] 第三章:SharePoint Workflow 配置运行环境 一 1. SharePoint Workflow 配置运行环境 一[ 13:00 ] 2. SharePoint Workflow 为站点注册工作流服务[ 08:35 ] 第四章:SharePoint Workflow 配置运行环境 二 1. SharePoint Workflow 配置运行环境 二[ 16:35 ] 2. SharePoint Workflow 指定离线安装工具语言[ 08:38 ] 第五章:SharePoint Workflow 配置HelloWorld示例 1. SharePoint Workflow 配置HelloWorld示例[ 13:21 ] 第六章:SharePoint Workflow 配置顺序工作流示例 1. SharePoint Workflow 配置顺序工作流示例[ 16:41 ] 第七章:SharePoint Workflow 配置状态机工作流示例 1. SharePoint Workflow 配置状态机工作流示例[ 11:49 ] 2. SharePoint Workflow 状态机工作流添加审批意见[ 11:49 ] 第八章:SharePoint Workflow 使用Visio可视化配置 1. SharePoint Workflow 使用Visio可视化配置[ 24:56 ] 课件付费后下载 第九章:SharePoint Workflow 配置三级审批工作流示例 1. SharePoint Workflow 配置三级审批工作流示例[ 35:34 ] 2. SharePoint Workflow 发布文档申请工作流示例[ 22:48 ]本次课程以Office 365 企业版 E3为环境,介绍如何使用其中SharePoint Online产品相关技术,如何通过站点配置和Designer设计,通过和工作流相结合,完成企业内部需求,实现企业信息化建设。 你将收获 通过本次课程的学习,让大家了解Office 365中的SharePoint Online产品的基本功能,学会创建SharePoint Online的应用程序,实施一些企业内部的小需求。 章节目录 01. 课程简介[ 12:24 ] 课件付费后下载 02. SharePoint Online 产品概述[ 12:12 ] 课件付费后下载 03. SharePoint Online 初体验[ 30:55 ] 课件付费后下载 04. SharePoint Online 使用列表库发布通知[ 38:34 ] 课件付费后下载 05. SharePoint Online 使用文档库管理报销[ 48:37 ] 课件付费后下载 06. SharePoint Online 使用资产库企业培训[ 18:11 ] 课件付费后下载 07. SharePoint Online 使用Wiki库知识管理[ 13:44 ] 课件付费后下载 08. SharePoint Online 使用联系人创建通讯录[ 11:17 ] 课件付费后下载 09. SharePoint Online 使用讨论版讨论话题[ 16:57 ] 课件付费后下载 10. SharePoint Online 使用调查收集员工意见[ 16:50 ] 课件付费后下载 11. SharePoint Online 创建和使用母版页[ 25:49 ] 课件付费后下载 12. SharePoint Online 创建和使用页面布局[ 24:53
SharePoint 如何获取详细Log信息
在SharePoint的运维当中,我们可能经常会遇到排错,但是即使找到日志,也不是特别的详细,我们还是需要各种无厘头的猜测。 其实,SharePoint是可以打开详细的日志的,尤其是面对一些服务产生的日志,更是非常好用,代码层面的错误,还是建议大家调试解决。 下面,简单的为大家介绍一下如何开启详细的日志,有兴趣的可以记录一下,以备不时之需。 步骤:1).以管理员权限运行SharePoint management PowerShell 2).运行以下命令启用详细日志: Set-SPLogLevel –TraceSeverity VerboseEx 3).创建新的ULS Log,会把错误信息写到一个新的日志文件里 New-SPLogFile 4).重现错误 5).创建新的ULS Log,这样就把接下来的错误,写到一个新的日志里,确保我们的错误信息,都在上一个日志里,文件也不会很大。 New-SPLogFile 6).执行以下指令获取日志所在路径,当然也可以去管理中心 - 监控 - 报表 - 配置诊断日志记录 - 跟踪日志 Get-SPDiagnosticConfig | select LogLocation 7).将日志文件按照时间降序排列后,第二个后缀名为log的文件为我们需要的日志文件. 文件名格式为:<机器名>-<日期>-<时间>.log 8).使用完毕,记得将日志详细级别复原,否则会生成大量的日志文件,占领我们的磁盘空间: Clear-SPLogLevel 以上便是开启详细日志功能,并且记录日志信息,关闭详细日志功能的简单介绍。希望大家在SharePoint的运维过程中,还是少遇到各种bug为好,但是真的遇到了,还是需要有一些手段,来解决问题的。 好了,简单的介绍就到这里,希望对大家有所帮助。
SharePoint 服务器端对象迁移文件夹 实现教程
最近有个需求,写个定时迁移文件夹的小程序,因为计时器任务比较繁琐,所以选择了控制台程序。然后,用windows的计划任务执行,也许,会有广大朋友需要类似的功能,简单的分享一下代码逻辑,功能非常简单,希望大家不要见笑。 //提升权限代码SPSecurity.RunWithElevatedPrivileges(delegate() { //提升权限的核心代码 }); //创建网站集和网站对象using (SPSite site = new SPSite(siteUrl)) { using (SPWeb web = site.OpenWeb(webUrl)) { } } //允许非安全更新,否则客户端调用可能回报不安全更新操作的错误web.AllowUnsafeUpdates = true; web.AllowUnsafeUpdates = false; //获取文档库和文件夹 SPList sDoclib = web.Lists[sourceDoclib]; SPList tDoclib = web.Lists[transferDoclib]; SPListItemCollection items = sDoclib.Folders; //遍历文件夹,并迁移到目标文档库 foreach (SPListItem item in items) { SPFileCollection files = item.Folder.Files; item.Folder.MoveTo(web.Url + "/" + tDoclib.RootFolder.Url.ToString() + "/" + item.Folder.Name); }