每月檔案: 8 月 2007

MOSS 高級自訂搜索 — 案件的確在高級搜索 XSLT 中

很多時候不要修改高級的搜索 XSLT, 這樣看來我每一次我爬的小山頭.

這是我最新的課: 區分大小寫時引用列. 在我的高級搜索中, 我已經為此定義的列:

< xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
>
<
名稱="GafTrainingInvoiceNumber" />
<
名稱="GafTrainingInvoiceLocation" />
<
名稱="作業識別碼"/>
<
名稱="排名"/>
<
名稱="標題"/>
<
名稱="作者"/>
<
名稱="大小"/>
<
名稱="路徑"/>
<
名稱="說明"/>
<
名稱="寫入"/>
<
名稱="網站名稱"/>
<
名稱="CollapsingStatus"/>
<
名稱="HitHighlightedSummary"/>
<
名稱="HitHighlightedProperties"/>
<
名稱="ContentClass"/>
<
名稱="IsDocument"/>
<
名稱="PictureThumbnailURL"/>
</
>
</
>

顯示發票號碼、 發票位置的 XLST 已:

<p>
培訓發票編號: <xsl:值的 請選擇="GafTrainingInvoiceNumber"/>
<
br></br>
培訓發票位置: <xsl:值的 請選擇="GafTrainingInvoiceLocation"/>
</
p>

不過, 選擇具有要引用的屬性中全部小寫, 如在:

<p>
培訓發票編號: <xsl:值的 請選擇="gaftraininginvoicenumber"/>
<
br></br>
培訓發票位置: <xsl:值的 請選擇="gaftraininginvoicelocation"/>
</
p>


直到我改正錯誤, 搜尋結果顯示的標籤 (e 小節. "培訓發票編號") 但沒有資料.

苔蘚: 功能的示例 — — 自訂資料類型

業務應用場景:

製造業公司的 MOSS 企業範圍內實現 30+ 網站和幾個幾十個企業部門.

業務目標:

儘管大量的商業團體 (部門, 位置, 等), 某些資料應保持在全球一級. 舉個例子, 該公司的所有物理位置的權威主清單 (例如:. 生產設施, 倉庫位置, 銷售辦事處) 應保持在一個中心位置.

技術上的問題:

企業分類是使用多個網站集合來實現. 我們本來希望在 WSS 的自訂清單中創建的物理位置的權威清單. 然後, 當我們需要有一列中的內容類型 (或一列添加到清單或文件庫) 包含公司位置, 我們將創建一個使用"查找的列" 資料類型和指向該主清單.

不幸的是, 查找的資料類型必須訪問"本地的源清單" 我們的權威清單不能跨網站集合的含義.

技術解決方案:

實施新的自訂資料類型執行基於的 SPField,表示為其清單專案填充從主 WSS 清單中的使用者介面中的 DropDownList.

我們創建了一個新的網站集合,稱為 "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();
返回 .XYZZYCorporateLocationSelector SelectedValue。;
} // 獲取
設置
{
EnsureChildControls();
.XYZZYCorporateLocationSelector.SelectedValue = (字串).ItemFieldValue;
} // 設置
} // 重寫物件值

受保護 重寫 無效 CreateChildControls()
{

如果 (.欄位 = = 則為 null || .ControlMode = = SPControlMode.顯示)
返回;

基地.CreateChildControls();

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

如果 (.XYZZYCorporateLocationSelector = = 則為 null)
拋出 新增功能 異常("錯誤: 無法載入。ASCX 檔!");

如果 (!.IsPostBack 頁。)
{

使用 (SPSite 網站 = 新增功能 SPSite("HTTP://本地主機/enterprisedata"))
{
使用 (SPWeb web = 網站。OpenWeb())
{

SPList 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,文化 = 中性,公開金鑰 = 71e9bce111e9429c" compilationMode"總是 =" %>
<%
@ 登記冊 Tagprefix="wssawc" Namespace="Microsoft.SharePoint.WebControls" 程式集="Microsoft.SharePoint, 版本 = 12.0.0.0, 文化 = 中性, 公開金鑰 = 71e9bce111e9429c" %> <%@ 登記冊 Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" 程式集="Microsoft.SharePoint, 版本 = 12.0.0.0, 文化 = 中性, 公開金鑰 = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID="XYZZYCorporateLocationFieldControl" runat="伺服器">
<範本>
<asp:DropDownList ID="XYZZYCorporateLocationSelector" runat="伺服器" />
</範本>
</
SharePoint:RenderingTemplate>

以上被保存到 c:\程式 filescommon filesmicrosoft sharedweb 伺服器 extensions12controltemplates.

  1. 最後, 我們創建一個 XML 檔將保存到 ... ... 12XML 目錄. 這是定義我們的自訂資料類型的加楓和我的例子, 看起來像這樣:

<?xml 版本="1.0" 編碼="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
欄位 名稱="TypeName">CorporateLocations</欄位>
<
欄位 名稱="ParentType">文本</欄位>
<
欄位 名稱="TypeDisplayName">公司位置</欄位>
<
欄位 名稱="TypeShortDescription">所有 XYZZY 公司的地點,包括製造或其他設施.</欄位>
<
欄位 名稱="UserCreatable">真實</欄位>
<
欄位 名稱="ShowInListCreate">真實</欄位>
<
欄位 名稱="ShowInDocumentLibraryCreate">真實</欄位>
<
欄位 名稱="ShowInSurveyCreate">真實</欄位>
<
欄位 名稱="ShowInColumnTemplateCreate">真實</欄位>
<
欄位 名稱="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, 版本 = 1.0.0.0, 文化 = 中性, 應用 = b0b19e85410990c4</欄位>
<
RenderPattern 名稱="DisplayPattern">
<
交換器>
<
Expr>
<
/>
</
Expr>

<案例 價值=""/>

<預設值>
<
HTML>
<![CDATA[
<大跨度風格 ="顏色:紅"><b>]]>
</
HTML>

<
SubColumnNumber="0" HTMLEncode="真實"/>

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

</
預設值>
</
交換器>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
此 XML 檔將自訂資料類型添加到"庫 WSS" 和與它匹配與 gac 中了程式集.

移動後,所有這些位到位, 在伺服器和它 iisreset 應該很好地工作的所有開始.

WSS: 創建加楓欄位定義的資訊技術.

其他類別: 加楓

在這裡 是由一個叫"克雷格偉大過帳" 查找欄位內容類型基於現實生活定義從一個網站關閉的加楓定義的技術.

他過帳說這一切. 簡介:

  1. 創建內容類型.
  2. 將它與清單相關聯.
  3. 開放與設計器 SharePoint 清單.
  4. 將匯出到一個"個人 web 包".
  5. 重命名為.cab.
  6. 提取物清單.
  7. 查找您的內容類型和關聯加楓.

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

其他類別: Visual Studio 2005

要啟用有用的智慧感知功能, 元素, 在 visual studio 中等 2005:

  1. WSS 伺服器的訪問.
  2. 導航到"c:\程式 filescommon 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. 該連結還建議 裡面的微軟 Windows SharePoint 服務 3.0 由泰德帕蒂森 & 丹尼爾 · 拉森. 這本書涵蓋了幾乎所有的科目測試位址. 我發現它是很大,本身超越簡單的考試準備. 它提供很好的例子,真的讓我思考一些新的和有趣的事情,嘗試. 如果你想要跳過在這本書中的幾位, 只是交叉引用書中的 TOC 與從上面的連結中的專案.
  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))

我們花了一些時間研究這不幸的是, 沒有提出任何有用的東西. 診斷日誌中有一些消息, 但很難完全將它們與此問題相關聯.

在結束, 我們刪除網站集,並重新創建它,解決它.

如果我弄明白是什麼導致這在未來, 我將更新這個帖子.