每月档案: 11 月 2007

你不能打败 SharePoint 的范围

在最后两天, 我已经参加了两次会议,在此期间,我们提出了 SharePoint 项目的结果. 首席信息官和他的团队加入第一次会议. 这是标准并不特别值得注意. IT 部门是明显是涉及在企业范围内部署的任何技术项目. 第二次会议扩大到包括 V.P. 从市场营销, 代表人力资源部的几个董事, 物流, 制造业, 资本项目, 质量, 采购, 企业的发展和其他部门 (其中一些人没有在当前阶段甚至直接参与). 这就是强大广泛的受众.

在我以前的生活中, 我主要从事的 ERP 和 CRM 项目. 他们都有一个相当广泛的解决方案域但不是与 SharePoint 一样宽. 要充分实现, SharePoint 项目合法和一定达到融入组织的每一个角落. 多少其他企业解决方案都有那种到达? 不是很多.

SharePoint 显然是巨大的机遇,对于我们有幸能在这空间. 它提供了一个很大的技术机会 (其中以某种方式开启了它的头 在这里 根据"技术你必须掌握"). 但更好, SharePoint 我们暴露在广泛和宽范围的业务流程,通过这些服务. 多少的 CRM 专家工作与制造方面的公司? 多少的 ERP 顾问工作与人力资源人才采集? SharePoint 超过他们两个.

像什么, 它并不完美, 但它是享受这个美好的地方.

爱 [填写您最爱的人/高正], 不要更改标题’ 网站栏.

关于 SharePoint 论坛, 有人偶尔会问起"更改标题的标签" 关于"从或删除标题列表".

底线: 不这样做!

不幸的是, 用户界面允许单向改变的如图所示的列标签:

图像

标题是"一项相关联的列" 内容类型. 很多, 很多, 许多 CT 的使用此列,如果您更改了这里, 它的涟漪出无处不在. 有是一个好机会,你不是有意这样的事情发生. 你也许是对自己的思维, "我有一个自定义查找列表和 ' 标题’ 只是没有道理的列的名称作为, 所以我要将其更改为状态代码’ 然后添加一个描述列。" 但如果你坚持这种想法和重命名 ' 标题’ 向状态代码, 每个列表中的标题 (包括文档库) 更改"状态代码" 和你大概 不想让这种事发生.

真正的问题是这是一个单向的变化. 知道的 UI"" "标题" 是一个保留的字. 所以, 如果你试着改变"状态代码" 返回到"标题", 它会阻止你和你现在 把自己涂成角 using paint that never dries 🙂

如果您已经更改了它那么会发生什么? 我还没见过我们所有想要的答案, 这是一种简单和容易的方法,以标签更改为标题. 马上, 最好的建议是要将其更改为类似于"Doc/项目标题". 这就是足够一般的标签,不可能为您的用户太刺耳.

我有几个其他的意见,对我研究的东西的待办事项列表:

  • 与 Microsoft 联系.
  • 做某事与对象模型, 也许在与功能结合.
  • 找出数据库架构和手动更新 SQL. (虽然这样做之前,您应该联系微软; 它将有可能作废您的支持合同).

如果有谁知道如何解决这个问题, 请张贴评论.

下午晚些时候更新, 11/15: 我发现这个链接的描述创建没有标题列的列表类型的方法: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF 和你的朋友, CDATA

我注意到有些尴尬和不必要的手-编码 RdbCommandText 在一些例子中的 (包括 MSDN 文档).

我想要指出到 BDC 的命令可以被包装在 CDATA 标记他们的"自然的新人" 窗体. 所以, 这尴尬的建设:

<属性 名称="RdbCommandText" 类型="System.String">
选择 dbo。MCRS_SETTLEMENT.id, dbo。MCRS_SETTLEMENT.settlement 从 dbo。MCRS_SETTLEMENT
在哪里 (id &gt;@MinId =) 和 (id &这是;= @MaxId)
</属性>

可以更好地表示这种方式:

<属性 名称="RdbCommandText" 类型="System.String">
<![CDATA[
选择 dbo。MCRS_SETTLEMENT.id, dbo。MCRS_SETTLEMENT.settlement 从 dbo。MCRS_SETTLEMENT
在哪里 (id >@MinId =) 和 (id <@MaxId =)
]]>
</属性>

</结束>

BDC 底漆

BDC 简介

功能示例: 连接到 SQL 数据库与嵌入的用户 id 和密码的 BDC ADF

我需要到 SQL 数据库通过 BDC 接通苔藓. 为测试/POC 目的, 我想要在 ADF 中嵌入的 SQL 帐户用户 id 和密码. 从开始 此模板 (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), 创建连接到特定的 SQL server 实例,并使用特定的用户 id 和密码登录 ADF 和代码片断所示:

  <LobSystemInstances>
    <LobSystemInstance 名称="ClaimsInstance">
      <属性>
        <属性 名称="AuthenticationMode" 类型="System.String">直通</属性>
        <属性 名称="DatabaseAccessProvider" 类型="System.String">SqlServer</属性>
        <属性 名称="RdbConnection 数据源" 类型="System.String">实际的 serveractual 实例</属性>
        <属性 名称="RdbConnection 初始目录" 类型="System.String">实际的初始目录</属性>
        <属性 名称="RdbConnection 集成安全性" 类型="System.String">SSPI</属性>
        <属性 名称="RdbConnection 池" 类型="System.String">false</属性>

        <!-- 这些都是关键的值: -->
        <属性 名称="RdbConnection 用户 ID" 类型="System.String">暗访的用户 ID</属性>
        <属性 名称="RdbConnection 密码" 类型="System.String">实际的密码</属性>
        <属性 名称="RdbConnection Trusted_Connection" 类型="System.String">false</属性>

      </属性>
    </LobSystemInstance>
  </LobSystemInstances>

它不是一种最佳做法, 但它是有用的快速和简单的配置来测试. 这是出奇地难以弄清楚. 我从来没有发现一个带有搜索关键字的功能示例:

  • adf 嵌入的用户 id 和密码
  • 在 adf 中嵌入的用户 id 和密码
  • 在 adf bdc 中嵌入的用户 id 和密码
  • sharepoint bdc 底漆
  • sharepoint 在 adf 中嵌入的用户 id 和密码

</结束>

订阅我的博客.

浪涌保护器自定义工作流操作 — 字符串操作增强功能

大约一周前, 我开始了一个 codeplex 项目,提供一种将自定义操作功能添加到工作流设计器 SharePoit 的简单和合理通用的方法. 它被描述在这里: http://www.codeplex.com/spdwfextensions. 除了简单地提供一个框架, 它还旨在提供一套有用的功能,将会使 SPD 更有用/灵活/强大.

这里是当前版本的计划的功能 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

如果任何人有任何兴趣在此项目中, 请留言或启动/添加到这里讨论: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

下面是当前的编码的功能集 (虽然不完全测试的作为 11/08/07):

函数 说明 (如果不相同.Net 功能,)
Num-条目() 返回数字的"条目" 根据指定的分隔符分隔的字符串中.

例如: 在一个字符串中的 Num 条目",b,c" 带分隔符"," = 3.

条目() 根据指定的分隔符分隔的字符串中返回的第 n 个标记.
长度 String.Length
替换() String.Replace()
包含() String.Contains()
返回"true 一词" 或者"虚假"一词.
子字符串(启动) String.Substring(启动)
子字符串(启动,结束) String.Substring(启动,结束)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
返回"true 一词" 或者"虚假"一词.
EndsWith() String.EndsWith()
返回"true 一词" 或者"虚假"一词.

快速 & 简单的 url 编码台式机实用程序

我一直需要到 url-编码这周的某些字符串和拼凑了一个小的实用程序,我以为会把 SkyDrive 为社区.

让这里的二进制: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncode.zip

让这里的 visual studio 解决方案: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

这里是一个屏幕快照:

图像

快速而方便地: 将超链接嵌入到 XSLT 数据视图 web 部件

更新 (01/17/08): 这篇博客谈更多超链接 XSL 善良: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

概述和目标: 我已经创建了一个简单的条形图,作为仪表板上的组件. 我会保存详细信息构建图表的另一篇文章, 但不是我发明的技术 (也不是问号, 对于那件事). 原来有一个 bug,在图表中,而我固定的, 我藉此机会将一些标签转换成指着背后的图基础列表的超链接. 例如, 有了一个标签值与"封存". 我想要变成超链接的标签,以便用户可以点击它,深入查看其状态的值是"持有"列表中的特定条目.

步骤:

  1. 使用 visual studio 为 sharepoint 识别的智能感知.
  2. 复制到 visual studio 中的 XSLT DVWP (创建一个空白的项目, 向项目中添加一个 XSL 文件).
  3. 复制的链接您想要使用到剪贴板.
  4. 将它粘贴到在 XSL 中的正确位置.
  5. 转换从查询字符串的 URL 参数分隔符"&" 到"&amp;"
  6. Url 编码的各个参数.
  7. 包装里面那 <href…> </一>

示例:

我有一个 URL:

http://[服务器]/[网站]/Lists/Open Positions/AllItems.aspx?视图 ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = 招聘人员&FilterValue1 = 举行

转换成:

     < href="Lists/Open Positions/AllItems.aspx?视图 = {84eea2f5-121B-40B7-946F-
0FA704A1DAA1%7 d&amp;FilterField1 = 招聘人员&amp;FilterValue1 = 举行"> 举行: </>

我手动改变了从第一个参数:

{84EEA2F5-121B-40B7-946F-0FA704A1DAA1}

自:

%7b84EEA2F5-121B-40B7-946F-0FA704A1DAA1%7 d

(在这, 到 { 的左大括号转换和关闭括号转换至 %7 d)

第二和第三个参数’ 参数 ("FilterField1 =招聘人员" 和"FilterValue1 =举行" 分别) 不需要进行 url 编码,因为它们不包含任何不安全的字符.

备注:

这种技术通常应工作任何您想要在哪里该超链接包含 url 参数如 XSLT 中嵌入超链接的地方:

http://[服务器]/[网站]/Lists/Open Positions/AllItems.aspx?视图 ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = 招聘人员&FilterValue1 = 举行

我有 URL 本身所访问的自定义列表和手动筛选在状态列上 (标记"招聘人员" 以上).

快速和简单: 启用设计器 SharePoint 工作流,以更新 InfoPath 窗体

方案: 我有一个 InfoPath 表单,前端使用 SharePoint 设计器来实现工作流过程. 在一个点, 经理必须批准形式. 因为我不能指望工作流历史记录,以满足我的审核要求, 我决定我自己审核消息存储在窗体本身上直接.

概述:

设计窗体并将其作为发布 内容类型 和窗体本身到文档库. 马克所需窗体字段作为更新从青苔. 窗体绑的内容类型和内容类型"附加" 对窗体库 (或多, 如果需要帮助,). 写一个工作流,更新的字段.

具体步骤:

  1. 创建文档库. 这将举行你 InfoPath 模板.
  2. 创建窗体库.
  3. 创建 InfoPath 表单. 包含一个文本字段, "审核消息".
  4. 作为内容类型发布窗体 (不是文档).
  5. 同时填写发布对话框:
    一) .Xsn 文件保存到文档库 (一步 #1).
    b) 发布的"审计的消息" 字段和标记真实: "允许用户编辑此字段中的数据,通过使用一个数据表或属性页".
    c) 创建一个新的内容类型,并给它一个适当的名称.
  6. 访问窗体库.
    一) 转到其先进的设置并启用表单库来管理内容类型.
    b) 选择新创建的内容类型 (5c 以上). 它将在"Microsoft InfoPath 下分组" (或类似).
    c) 删除默认的"窗体" 图书馆的内容类型.
    d) 马克库"显示为 web 页" 这样,窗体将推出从 SharePoint 和不在 InfoPath 工作站客户端.
  7. 回到正确的窗体库,单击"新建" 只是验证窗体正确过帐和署理如你想要.
  8. 火起来 SharePoint 设计器,然后导航到网站的宿主表单库 (从一步 2).
  9. 创建一个新的工作流附加到窗体库.
  10. 添加单个操作"在当前项目中设置字段". 你应该期望 SharePoint 设计器向列表中你就是你的领域, "审核消息". 将它分配一个值.
  11. 单击完成,返回到表单库.
  12. 创建一个新的窗体和一些测试的值放入"审核消息" 字段.
  13. 将其保存并返回到表单库.
  14. 用鼠标右键单击, 选择"工作流" 和您的工作流的启动.
  15. 它应该几乎立即运行. 拉起窗体 (从一步 12) 如果所有已经计划, "审核消息" 已分配您在步骤中提供的任何值 10.

备注:

并非所有控件都可以都配置为此双向通信. 例如, 它似乎并不执行修改文本字段重复节包裹的 SPD 工作流.

其中一个关键去的这里的是我们真的已经创建的内容类型与关联的模板. 这也使我们能够在相同的表单库中存储多个 InfoPath 表单模板.

这就要求表单服务器. 它最肯定不去工作在 WSS 3.0 环境和甚至可能还需要一种企业 SharePoint 环境.

小猎犬号已降落 (10 月 2007 问题)

(这是实际上有点老新闻, 但我最喜欢的消防局作为座右铭宣告, "亡羊补牢").

看看这里: http://www.sharepointbeagle.com/

如果你还没有, 一定要 登记.

答案是肯定的, 请务必阅读 我的文章 关于真实世界的 SharePoint 项目 (包括需求定义, KPI 的, 内容类型, 仪表板和更多) 以及 我的同事 篇文章的内容查询 web 部件.

也有很多其他好的东西.

如何删除 “查看所有网站内容” 链接

我被问这个问题几乎每个礼拜, 通常在安全讨论. 管理员/网站创建者已设置一个站点, 配置的安全, 被安排的 web 部件和自定义快速启动向最终用户提供的选项,所以完美集. 但, 开箱即用, 您不能删除"查看所有网站内容" 链接.

Mark Wagner 提供了答案 在这里 (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). 他广受好评的两个层次是太棒了. 它提供了对这个问题的答案, "如何删除查看所有网站内容" 链接? 然后, 它回答的即时的后续问题: 如何轻松地使所有网站内容都链接站点的站点的基础的视图?

作为奖金: 他的方法适用于 WSS, 不只是苔藓.

</结束>

订阅我的博客!