快速和简单: 提供一个 Web 站点,在 C# 中使用 SharePoint 对象模型

我试着寻找一个小代码段代码表明如何可以在站点集合中创建新的 SPWeb. 我没找到作为很快或很容易,不出所料所以我会在这个问题上耳光在一起的一个小的条目.

此代码创建一个新的 Wiki 网站:

 SPSite siteCollection;

    siteCollection = 新增功能 SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy 标题",
        "xyzzy 描述", 1033, SPWebTemplate.WebTemplateWIKI, false, false);

我最初的搜索失败,因为我一直在寻找像"提供网站使用 sharepoint 对象模型的短语" 等.

如果您 搜索 为"Webs.Add()", 你会发现一些非常有用的博客条目, MSDN 文章和关于这个问题深入的 SDK 文档. 我绝对推荐 此网站.

</结束>

订阅我的博客.

Technorati 标签:

与 Web 服务集成 SharePoint 设计器的工作流

我已经打与 SharePoint 设计器的自定义操作一段时间了 (请看这里 对于一些详细的东西, 如果你有兴趣,).

我当前的项目中, 我们需要做一些相当繁重的工作和我们想要使用声明性 SPD 工作流来管理相关的业务流程.

长话短, 这是完全有可能. 我扩展我 Codeplex 项目来调用"家务助理服务" 现在我们可以调用 web 服务直接从 SPD 工作流.

这里是签名:

 公众 字符串 调度程序(
        Guid WebID, // 通过运行时环境
        Guid SiteID, // 通过运行时环境
        字符串 ListID, // 通过 RTE (不知道为什么这是一个字符串, 没有一个 GUID)
        int ListItemID, // 通过 RTE.
        字符串 XmlMessage) // 通过用户在 SPD 中声明.

这利用了这一事实我们可以获取重要的工作流程的信息, 喜欢的网站, 列表 ID, 等. 这是很好的印证在几个地方那些您感兴趣创建您自己的自定义操作. 这个想法是要提取的 XML 字符串,如用户派遣一个适当的程序提供的. 有趣的东西!

不幸的是, 这显然是一张单程机票降到 "松散左肩" 反模式的土地, but it’s better than hitting a brick wall 🙂

如果你做它,即使你知道它是一种反模式是一种反模式吗?

我希望能在不久的将来把这个包装内 Codeplex. 如果你有兴趣在我这样做, 给我戳 (电子邮件 或留下你的评论) and I’ll be that more enthusiastic about doing it 🙂

</结束>

订阅我的博客.

Technorati 标签: ,

周日搞笑: “我不知道是否您的密码是 …”

最近买午餐给弟弟 (像往常一样) 最后我们谈论有趣的事情,我们做了我们各自的院校. 在我的母校, 拉斐特学院, IT 部门的学术支持了包容性很强的思路. 我们有大量的绳索,我利用了,有时.

两个我最喜欢的记忆涉及到我的好朋友, 加布. 他犯了可怕的错误,告诉他"我是一年级的新生年人, 但是我有大二站" 由于他已采取的各种先进的安置类, 等. 我们很多人都同样位于但我们没有这么多谈论它. 他高中最后一年, 当我们把他介绍给人, 我们会说"这是盖柏. 他是一位高级, 但他有二年级站".

学院有一些 Sun 工作站服务器运行 X 窗口. 他们有巨大的显示器和工程师们将它们用于 CAD 和其他无聊的工程师东西. 我们 CS 人用它们来学习编程和, 答案是肯定的, 玩游戏.

我们不喜欢太多所以我们最喜欢做的事情之一就是 telnet 到框中他们的无助的计算机工程师,并运行 X 眼 对他们. 这将弹出一双眼睛跟随鼠标左右在屏幕. 你可以弹出甚至更多,从字面上有十几个或多个运行的 X 眼应用程序. 当一个倒霉的工程师试图关闭一个又一个的 X 眼并低声嘀咕时,尽量不要笑出声 🙂

我们也在那些箱子上玩耍 X 迷航. 要做到这一点, 你不得不下载的源代码, 只要你能找到他们,建立它得到各种依赖项. 我不是一个复杂的 C 程序员, 但我可以读头文件. 我正在通过这些,发现像指令"#DEFINE MAX_TORPEDO_DISTANCE 10". 我玩了,增加阶段和鱼雷的射程和火力, 重新生成它,然后摧毁 Gabe 下次我们演奏的.

加布也是一个电视节目叫的超级粉丝 布莱克的 7. 从未见过它, 但这并不妨碍我坚持那博士. 高级显示是谁. 争论有时会变得激烈🙂

一天, 我想到我可能会猜到他的 UNIX 密码. 我有一天在他旁边坐下,高声宣布, "我要去现在猜测您的密码, 加布。" "是的, 权利" 是他的回答. 然后登录, 输入他的用户 id, 转身面对他, 键入并大声地说, "我不知道是否它是 B-L-A-K-E-7" ? 触摸打字了从未丰厚回报一样一样那一天.

下个 星期 (或很快): 更多计算机室滑稽的事从大学.

你有任何要分享吗? 留下评论或电子邮件我,我会将它们发布在这里.

</结束>

订阅我的博客.

Technorati 标签:

简单的解释: “值并不属于在预期的范围。”

更新: 匿名的海报留下伟大的评论关于内部名称. 一定要阅读它.

使用事件接收器和其他代码引用的对象模型通过 SharePoint 列表项时, 我常常想生成此错误在运行时的错误:

加载时出错,并在 xyzzy 中运行事件接收器 Conchango.xyzzyEventReceiver, 版本 = 1.0.0.0, 文化 = 中性, 公钥 = 0dc50a750396c3ac. 附加信息是下面. : 值不在预期的范围内.

这是一个相当通用的错误,可能造成许多不同的方式. 不过, 一个简单的解释是,我错误地引用字段. 如果字段的名称是"到期日", 我必须在事件接收器中引用此类:

属性。ListItem["到期日"]

当我出现拼写错误或使用错误的大小写,引用该字段时, SharePoint 生成上述提到的运行时错误. 例如, 这是错误的:

属性。ListItem["到期日"]

</结束>

订阅我的博客.

Technorati 标签:

最终用户快速提示: 排序视图中的文档库, 列表, 等.

我们可以, 应该和做在 SharePoint 列表中创建很多的意见 (文档库, 自定义列表, 等). SharePoint 总是列出可用的视图按字母顺序排列. 我们不能改变这使用框的功能. 如果它可以通过自定义 (它可以不肯定), 它是远到技术为典型的最终用户.

如果你想要控制哪些 SharePoint 中的顺序列出了可用的视图, 只需将预置数字或字母的视图名称, 如在:

1 – 由材料类型
2 – 所有的文档
3 – 截止日期

-或-

A – 由材料类型
B – 所有的文档
C – 截止日期

我还创建了视图的目的是严格饲料 KPI. 我一直在关注此命名约定:

Z_KPI_[说明]

这导致我"KPI" 视图,以显示在列表的底部.

</结束>

订阅我的博客.

Technorati 标签: ,

周日搞笑: “当我是一个小男孩”

作为一个家长, 我在某个地方发现沿该线"当我是一个小男孩" 把戏.

我的儿子, 大概四或五次, 在玩一个气球和喜欢玩气球的最小男孩, 他突然它. 他是非常生气. 世界已经走到尽头. 我对他说, "当我还是小男孩, 一个气球,它弹出并最终, 我得到了一个新的气球。" 它似乎能帮助他应付他的损失,并导致一个有趣的谈论它是什么样子时,我是一个小男孩.

那工作以及我并安慰技术使用它多次在未来一段时间. 我做一次陷入困境时他怪物牧场主 3 生物死了. 我谈我的狗, 王子, 在一次车祸中丧生. 这一次, 他的回答是, "现在我觉得坏两件事!" 我一直避免使用"当我还是一个小男孩" 那之后的安慰技术.

之前的死狗事件, 然而, 我也已经开始使用这项技术要说服他去做家务. "当我还是一个小男孩, 我不得不走出去,拿报纸", "干净的房间里", "让妈妈她咖啡杯", 等.

这也是相当成功了一会儿, 但他开始越来越多地反抗暴政的我的童年. 一个事件, 特别是, 标志着结束. 我告诉他要把从路边的垃圾罐带回车库. 他认为,我的回应, "当我还是一个小男孩, 我不得不把垃圾带回车库。" 他的回答, "哦是的! 好吧,当你是个小男孩, 那是愚蠢!".

</结束>

订阅我的博客.

Technorati 标签:

不能担保视图和列的列表和文档库

更新 (02/29/08): 这个新的 codeplex 项目似乎要提供一种方法确保单个列: http://www.codeplex.com/SPListDisplaySetting. 如果您有任何与它合作的经验, 请留下评论.

论坛海报经常问这样的问题: "我有一个管理器视图和工作人员的列表的视图. 如何,工作人员不能使用它安全的管理器视图?"

他们还经常问的一个相关的问题: "我想要保护的特定元数据的列,以便只有经理可以编辑该列,虽然其他人可能不甚至看到它。"

这些答案适用于这两个 WSS 3.0 和苔藓:

  • SharePoint 不提供出框支持争取意见.
  • SharePoint 不安全列提供出框支持.

有几种技术一可以按照满足这些类的安全要求. 这里是我能想到的:

  • 使用预置的项目级安全. 意见总是荣誉项目级安全配置. 事件接收器和/或工作流可以自动执行安全任务.
  • 使用的个人视图为"特权" 视图. 这些都是容易设置. 不过, 由于其"个人" 性质, 这些需要为每个用户配置. 使用标准安全配置,以防止别人从创建个人视图.
  • 使用数据视图 web 部件并实现某种 AJAXy 安全修整解决方案.
  • 卷您自己的列表显示功能和纳入列级安全修整.
  • 修改数据输入窗体并使用 JavaScript 安全模型结合实现列级安全修整.
  • 使用 InfoPath 窗体输入数据. 实现通过 web 服务调用到 SharePoint 和有条件地隐藏字段所需的列级安全修整.
  • 卷自己的 ASP.NET 数据条目函数实现列级安全修整.

这些选项均没那么好, 但有至少一条路径,如果您需要遵循, 即使很难.

请注意: 如果你去这些路径的任何, 别忘了"行动-> 打开 Windows 资源管理器". 你要确保你使用该功能以确保它不会作为一个"后门工作测试" 和击败你的安全计划.

如果你有其他的想法或者经验与确保列或视图, 请 电子邮件通知我 或请留言,我会更新此作为适当的过帐.

</结束>

订阅我的博客.

Technorati 标签:

小提示: BDC ADF 的版本号是你的朋友

如果您正在手动编码 ADF 的文件,并做了大量的测试/代码/导入周期, 使用版本号来使你的生活更轻松.

我不愿承认这一点, 但直到这一周, 我总是被删去的 ADF 和重新导入它. 这会打破我业务数据列,并让我将它们重新连接. 所有不必要.

文件这下"这是明显一旦你看到它".

示例:

<LobSystem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://BDCMetadata.xsd schemas.microsoft.com/office/2006/03/BusinessDataCatalog" 类型="Web 服务" 版本="1.2.0.0" 名称="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

更改的版本并重新导入和现有的业务数据列使用更新后的版本会自动与不需要的额外配置.

</结束>

订阅我的博客.

Technorati 标签:

解决方案: BDC 选取器显示结果只有一的列

我正在尝试提供 更多有用的查阅列,使用 BDC, 我碰了壁与 BDC 选取器. 如果你还没有看到它, BDC 机械臂是类似于一个人选取器,不同之处在于它与"业务数据"类型的列一起工作.

通过将业务数据列,如下所示的打开书本图标上单击您访问机械臂:

图像

上面的图片显示业务数据列,称为"主文档 Id". 该列被连接, 通过 BDC, 向 web 服务. Web 服务返回两列信息: 文档 ID 和标题. 这里的经营宗旨是提供"此文档基于" 功能. 用户选择"大师" 文档和当他们保存, 事件接收器将从引用主复制元数据字段.

默认情况下, BDC 机械臂看起来像这样,当我搜索文档的 ID ="38":

clip_image002

这是很有帮助, 但还不够好. 人们不是按 Id, 他们认为标题和/或其他元数据. 选择器允许您搜索其他列 (例如:. 标题) 但不会显示实际的找到它的标题列表, 只是他们 DocId 的如下所示:

clip_image002[1]

(拍摄的画面不是如此之大的因为我没拿返回任何有效的结果的搜索, 但是你可以看到,如果它发现了几个结果, 它只会显示 DocId 的, 没有标题).

我搜索的高、 低这个问题的答案和失败. 我的同事, 高龄 乔纳森 · 布拉德肖, 曾面对及解决这一问题. 当我伸手向他求助, 他指出,我朝着正确的方向.

配置选择器以显示多个列通过"ShowInPicker" 在 ADF 中的属性:

<属性 名称="ShowInPicker" 类型="System.Boolean">true</属性>

详细:

  <!-- 标题 -->
  <设计图 TypeName="System.String" 名称="标题" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">标题</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <属性>
      <属性 名称="DisplayByDefault" 类型="System.Boolean">true</属性>
      <属性 名称="ShowInPicker" 类型="System.Boolean">true</属性>
    </属性>
  </设计图>

将此属性设置引入了一个小问题. 只要你设置它一次, 你需要为每个您想要显示的列设置. 以我为例, 默认情况下显示 DocId BDC 选取器. 不过, 我有一次添加"ShowInPicker" 标题, DocId 不再显示. 我的解决办法是通过显式将 ShowInPicker 属性设置为 Doc ID.

下面是结果:

图像

(我会解释,样子很奇特的"168 – CamlSchema.xsd" 在以后的博客文章建设. 在短, 它是一个字符串,它允许稍有更好的用户体验).

答案是肯定的, 写了这篇博客, 我只是做了"ShowInPicker 搜索" 发现无数点击数, 包括这一: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. 它说明了该属性以及一些其他好的 BDC 东西的意义.

</结束>

订阅我的博客!

Technorati 标签: