每月档案: 8 月 2007

MOSS 的高级自定义搜索 — 案件不会在高级搜索 XSLT 中事

我不要经常修改 XSLT 高级的搜索, 所以好像我每次爬上小山.

这是我的最新课程: 案件事项时引用的列. 在我的高级搜索, 有列定义为这:

< xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
>
<
名称="GafTrainingInvoiceNumber" />
<
名称="GafTrainingInvoiceLocation" />
<
名称="作业标识符"/>
<
名称="排名"/>
<
名称="标题"/>
<
名称="作者"/>
<
名称="大小"/>
<
名称="路径"/>
<
名称="说明"/>
<
名称=""/>
<
名称="SiteName"/>
<
名称="CollapsingStatus"/>
<
名称="HitHighlightedSummary"/>
<
名称="HitHighlightedProperties"/>
<
名称="ContentClass"/>
<
名称="IsDocument"/>
<
名称="PictureThumbnailURL"/>
</
>
</
>

显示发票号码和发票位置 XLST 已:

<p>
培训发票编号: <xsl:值的 请选择="GafTrainingInvoiceNumber"/>
<
br></br>
培训发票位置: <xsl:值的 请选择="GafTrainingInvoiceLocation"/>
</
p>

不过, 选择具有要引用的属性的全部小写, 如在:

<p>
培训发票编号: <xsl:值的 请选择="gaftraininginvoicenumber"/>
<
br></br>
培训发票位置: <xsl:值的 请选择="gaftraininginvoicelocation"/>
</
p>


直到我改正错误, 搜索结果显示的标签 (e 小节. "培训发票编号") 但没有数据.

苔藓: 功能示例 — — 自定义数据类型

业务方案:

企业范围内执行的青苔的制造业公司 30+ 站点和几个几十个企业部门.

业务目标:

尽管大量的业务组 (部门, 地点, 等), 某些数据应维持在全球一级. 例如, 本公司的所有物理位置具有权威性的主列表 (例如:. 生产设施, 仓库地点, 销售办事处) 应维持在一个中央位置.

技术上的问题:

企业分类是使用多个站点集合来实现. 我们本来希望在 WSS 的自定义列表中创建的物理位置的权威列表. 然后, 当我们需要一个内容类型中有一列 (或一列添加到列表或文档库) 包含公司位置, 我们将创建使用"查找列" 数据类型和指向此主列表.

不幸的是, 查找数据类型必须访问"本地源列表" 我们具有权威性的列表不能跨站点集合的含义.

技术解决方案:

实施新的自定义数据类型执行基于的 SPField 和代表作为在 UI 中的列表项目从主 WSS 列表填充下拉列表.

我们创建了一个名为的新网站集合 "http://localhost/EnterpriseData". 有, 我们创建了名为"企业位置"的自定义列表. 此列表只是用一个标准的"标题" 字段包含列表的实际公司位置.

一个跟着几个离散的步骤在 WSS 中创建一个自定义数据类型. 他们是:

  1. 定义一个类的继承自 SPField (如果需要一个可从其他字段继承).

这里是的代码,:

公众 XYZZYCorporateLocationField : SPFieldText
{
公众 XYZZYCorporateLocationField
(SPFieldCollection 字段, 字符串 typeName, 字符串 显示名称)
: 基地(字段, typeName, 显示名称) { }

公众 XYZZYCorporateLocationField
(SPFieldCollection 字段, 字符串 显示名称)
: 基地(字段, 显示名称) { }

公众 重写 BaseFieldControl FieldRenderingControl
{
获取
{
BaseFieldControl 控制 = 新增功能 XYZZYCorporateLocationFieldControl();
控制。FieldName = .InternalName;
返回 控制;
} //获取
} // fieldrenderingcontrol

公众 重写 字符串 GetValidatedString(对象 价值)
{
如果 (.必填 || 值。ToString().等于(字符串.空))
{
抛出 新增功能 SPFieldValidationException ("未分配部门。");
}
返回 基地.GetValidatedString(价值);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. 定义另一个类,从基本字段控件继承, 如在:

公众 XYZZYCorporateLocationFieldControl : BaseFieldControl
{
受保护 DropDownList XYZZYCorporateLocationSelector;

受保护 重写 字符串 DefaultTemplateName
{
获取
{
返回 "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

公众 重写 对象 价值
{
获取
{
EnsureChildControls();
返回 .SelectedValue XYZZYCorporateLocationSelector。;
} // 获取
设置
{
EnsureChildControls();
.XYZZYCorporateLocationSelector.SelectedValue = (字符串).ItemFieldValue;
} // 设置
} // 重写对象值

受保护 重写 无效 CreateChildControls()
{

如果 (.字段 = = 则为 null || .ControlMode = = SPControlMode.显示)
返回;

基地.CreateChildControls();

.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer。("XYZZYCorporateLocationSelector");

如果 (.XYZZYCorporateLocationSelector = = 则为 null)
抛出 新增功能 异常("错误: 无法加载。ASCX 文件!");

如果 (!.IsPostBack 页。)
{

使用 (SPSite 网站 = 新增功能 SPSite("http://本地主机/enterprisedata"))
{
使用 (SPWeb web = 网站。OpenWeb())
{

写入 currentList = web。列表["企业位置"];

foreach (SPItem XYZZYCorporateLocation 在中 currentList.Items)
{
如果 (XYZZYCorporateLocation["标题"] == 则为 null) «««;

字符串 标题;
标题 = XYZZYCorporateLocation["标题"].ToString();

.XYZZYCorporateLocationSelector.Items.Add
(新增功能 ListItem(标题, 标题));

} // foreach

} // 使用 spweb web = site.openweb()
} // 使用 spsite 网站 = 新 spsite("http://本地主机/enterprisedata")

} // 如果不是回发

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

上面的代码基本上实现用于填充下拉列表中位于 WSS 自定义列表中的值与逻辑 http://localhost/enterprisedata 和命名"公司部门".

我在单个.cs 文件中定义这两个类, 编译它并把它放入 gac 中 (强烈要求, 答案是肯定的).

  1. 实现控件模板 (.ascx) 如图所示:

<%@ 控制 语言="C#" 继承="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,版本 = 12.0.0.0,文化 = 中性,Publickeytoken) = 71e9bce111e9429c" compilationMode="总" %>
<%
@ 登记册 Tagprefix="wssawc" Namespace="Microsoft.SharePoint.WebControls" 大会="Microsoft.SharePoint, 版本 = 12.0.0.0, 文化 = 中性, Publickeytoken) = 71e9bce111e9429c" %> <%@ 登记册 Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" 大会="Microsoft.SharePoint, 版本 = 12.0.0.0, 文化 = 中性, Publickeytoken) = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID="XYZZYCorporateLocationFieldControl" runat="服务器">
<模板>
<asp:DropDownList ID="XYZZYCorporateLocationSelector" runat="服务器" />
</模板>
</
SharePoint:RenderingTemplate>

以上所述被保存到 c:\程序必须使用 sharedweb 服务器 extensions12controltemplates.

  1. 最后, 我们创建一个 XML 文件将保存到...12XML 目录. 这是定义我们的自定义数据类型的加枫和我的例子, 看起来像这样:

<?xml 版本="1.0" 编码="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
字段 名称="TypeName">CorporateLocations</字段>
<
字段 名称="ParentType">文本</字段>
<
字段 名称="TypeDisplayName">公司位置</字段>
<
字段 名称="TypeShortDescription">所有 XYZZY 公司的地点,包括制造或其他设施.</字段>
<
字段 名称="UserCreatable">TRUE</字段>
<
字段 名称="ShowInListCreate">TRUE</字段>
<
字段 名称="ShowInDocumentLibraryCreate">TRUE</字段>
<
字段 名称="ShowInSurveyCreate">TRUE</字段>
<
字段 名称="ShowInColumnTemplateCreate">TRUE</字段>
<
字段 名称="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, 版本 = 1.0.0.0, 文化 = 中性, 应用 = b0b19e85410990c4</字段>
<
RenderPattern 名称="DisplayPattern">
<
开关>
<
Expr>
<
/>
</
Expr>

<案例 价值=""/>

<默认>
<
HTML>
<![CDATA[
<大跨度风格 ="颜色:红色"><b>]]>
</
HTML>

<
SubColumnNumber="0" HTMLEncode="TRUE"/>

<HTML><![CDATA[</b></大跨度>]]></HTML>

</
默认>
</
开关>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
此 XML 文件将自定义数据类型添加到"库 WSS" 和与它匹配和 gac 中了大会.

所有这些位移动到位后, 服务器和它上的 iisreset 应很好地工作的所有开始.

WSS: 创建字段定义 CAML 技术.

其他类别: 加枫

在这里 是由一个名叫"克雷格伟大过帐" 关于技术寻找 CAML 定义为字段内容类型基于现实生活的定义从一个站点关闭.

他公布说这一切. 简介:

  1. 创建内容类型.
  2. 将它与列表相关联.
  3. 开放与 SharePoint 设计师名单.
  4. 导出到"个人 web 包".
  5. 重命名为.cab.
  6. 提取物清单.
  7. 找到你的内容类型和关联的 CAML.

WSS: 摘要的步骤,使有用的功能/元素等. 智能感知 vs 2005

其他类别: Visual Studio 2005

若要启用有用的智能感知功能, 元素, 在 visual studio 等 2005:

  1. WSS 服务器访问.
  2. 导航到"c:\节目主题 filesmicrosoft sharedweb 服务器 extensions12TEMPLATEXML"
  3. 打开另一个 windows 资源管理器指向: "C:\程序 FilesMicrosoft Visual Studio 8XmlSchemas"
  4. 将以下文件从 WSS 服务器复制到您的 VS 2005 架构目录:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. 重新启动 VS 2005
  6. 向项目中添加新的 XML 文件.
  7. 在 XML 文件的正文中单击.
  8. 在属性窗格中, 单击"架构" 然后选择"wss.xsd" 从选项中. (没有必要选择其他 xsd,因为它们引用来自 wss.xsd).

为该 XML 文档现在启用了智能感知.

请参阅 在这里 关于这一主题和说明如何自动将 WSS 智能感知与任何 XML 文件相关联的更多信息.

WSS 考试 70-541, 微软视窗 SharePoint 服务 3.0 – 应用程序开发

花了,并通过上述的测试今. 我发现这次考试很困难而且公平.

有相对稀缺,这次考试在 web 上的信息. 我不知道为什么.

我显然不会得到任何详细介绍了这次考试, 但我认为我可以有把握地说以下:

  1. 信任此链接: http://www.microsoft.com/learning/exams/70-541.mspx.

    它列出了您需要知道要通过这次考试和它的, 国际海事组织, 非常准确.

  2. 该链接还建议 内部 Microsoft Windows SharePoint 服务 3.0 由 Ted 帕蒂森 & 丹尼尔 · 拉森. 这本书涵盖了几乎所有的主题,测试地址. 我发现这很棒本身超越简单的考试准备. 它提供了非常好的例子,并真的让我联想到一些新的和有趣的事情,要尝试. 如果您想要跳过在这本书中的几位, 只是这本书的目录中从上面的链接与项目的交叉引用.
  3. 没有什么比实际的实际操作经验. 如果您有时间和兴趣, 按照书中的示例,然后与他们的实验. 你会对考试有更方便的时间,以及真正了解 WSS 应用程序编程.

</结束>订阅我的博客!

苔藓 / InfoPath 表单服务器 (InfoPath 2007) 下拉列表中的性能

其他类别: InfoPath

摘要: InfoPath 2007 窗体部署到 MOSS 服务器提供供应商绑在 MOSS 的自定义列表的下拉列表. 在选择供应商, 规则将字段值分配给少量的文本字段 (例如销售代表名称, 地址, 城市, 状态, 邮编和电话. 性能很可怕. 我们注意到性能变得更糟 (非线性方式) 对于每个额外的字段,我们更新了这种方式. 即, 如果我们只是,更新销售代表姓名, 花 [x] 时间. 如果我们更新销售代表, 地址 1, 地址 2, 城市, 状态, 邮编, 花 10 时间更长.

解决方案: 编写的 web 服务 (可以找到示例代码 在这里) 这通过一个供应商的名称和它回返回供应商详细信息. 然后, 这种方式分配字段. 虽然这似乎太慢, 我们分配时没有明显的性能差异 1 与字段 8 字段. 作为额外的奖励, 用户可以得到"与服务器联系酷" 赛昂 虽然他们等待窗体调用和消费服务结果的影响.

苔藓: 出现异常. (HRESULT 的异常: 0x 80020009 (DISP_E_EXCEPTION))

更新: 我们永远不会确定此问题和它从来没有表面的根本原因.

我们注意到在发展地盘实施过程中突然, 两个用户都无法访问网站集合. 这些帐户可以验证到主站点, 但当试图访问特定网站集, 他们只是得到一个空白屏幕. 不显示错误, 只是一个白色的空白页.

我们以站点集合管理员的身份登录,并尝试添加这些用户之一,站点管理员以及此时间, 后按下"确定", 我们得到此消息:

出现异常. (HRESULT 的异常: 0x 80020009 (DISP_E_EXCEPTION))

我们花了一些时间研究这个,不幸的是, 想出来任何有用的东西. 诊断日志中有一些消息, 但很难完全将它们关联起来这个问题.

在结束, 我们的网站集删除和重新创建它,解决它.

如果我找出是什么导致这在将来, 我将更新这个帖子.