月別アーカイブ: 8 月 2007

MOSS の高度な検索のカスタマイズ — XSLT の高度な検索で大文字小文字を区別は

しばしば非常に高度な検索の XSLT を変更しないでください。, たびに小さな丘を登っているようなそうです。.

これは、私の最新のレッスン: ケース列を参照するときの問題します。. 私の高度な検索, これとして定義された列をあります。:

<ルート xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
>
<
名前="GafTrainingInvoiceNumber" />
<
名前="GafTrainingInvoiceLocation" />
<
名前="ワーク Id"/>
<
名前="ランク"/>
<
名前="タイトル"/>
<
名前="著者"/>
<
名前="サイズ"/>
<
名前="パス"/>
<
名前="説明"/>
<
名前="書き込み"/>
<
名前="SiteName"/>
<
名前="CollapsingStatus"/>
<
名前="HitHighlightedSummary"/>
<
名前="HitHighlightedProperties"/>
<
名前="ContentClass"/>
<
名前="IsDocument"/>
<
名前="PictureThumbnailURL"/>
</
>
</
ルート>

請求書番号、請求書の場所を表示します XLST をされていた:

<p>
トレーニング請求書番号: <xsl:値の 選択="GafTrainingInvoiceNumber"/>
<
br></br>
請求書の研修場所: <xsl:値の 選択="GafTrainingInvoiceLocation"/>
</
p>

ただし, 選択はすべて小文字でプロパティを参照するには, ように:

<p>
トレーニング請求書番号: <xsl:値の 選択="gaftraininginvoicenumber"/>
<
br></br>
請求書の研修場所: <xsl:値の 選択="gaftraininginvoicelocation"/>
</
p>


私はそれを修正するまで, 検索結果ラベル (すなわち. 「トレーニング請求書番号」) データがありませんが、.

MOSS: 機能例-カスタム データ型

ビジネス シナリオ:

製造会社のコケの企業全体に実装 30+ サイトと数十の企業の部門.

ビジネス目標:

ビジネス グループの多数にもかかわらず (部門, 場所, など), 特定のデータは、グローバル レベルで維持する必要があります。. たとえば, 会社のすべての物理的な場所の権限のマスター リスト (例えば. 製造設備, 倉庫の場所, 営業所) 中央に維持する必要があります。.

技術的な問題:

企業分類は複数のサイト コレクションを使用して実装されました. 我々 の物理的な場所の権限リストをカスタムの WSS リスト作成と思ってください。. [, 我々 はコンテンツ タイプの列を必要なとき (または、リストまたはドキュメント ライブラリに追加する列) 企業の場所が含まれています。, 「参照を使用して列を作成するか" データ型とこのマスター リストにポイント.

残念なことに, 参照データ型"ローカルのソース リストにアクセスする必要があります。" 権限の私達のリストがサイト コレクションにまたがることはできないことを意味.

技術ソリューション:

新しいカスタム データ型に基づいて SPField を実装し、マスターの WSS リストからそのリスト項目の設定 UI に DropDownList として表されます実装.

我々 と呼ばれる新しいサイト コレクションを作成 "http://localhost/EnterpriseData". そこ, 我々 は「企業の場所」という名前のカスタム リストを作成. このリストは標準的な"タイトルを使用してだけ" 企業の実際の場所のリストを格納するフィールド.

いずれかの手順をいくつか離散 WSS でカスタム データ型を作成するには. 彼らは:

  1. SPField から継承するクラスを定義します。 (必要な場合その他のフィールドから 1 つを継承可能性があります。).

ここでは、そのためのコード:

パブリック クラス XYZZYCorporateLocationField : SPFieldText
{
パブリック XYZZYCorporateLocationField
(SPFieldCollection フィールド, 文字列 typeName, 文字列 displayName)
: ベース(フィールド, typeName, displayName) { }

パブリック XYZZYCorporateLocationField
(SPFieldCollection フィールド, 文字列 displayName)
: ベース(フィールド, displayName) { }

パブリック オーバーライド BaseFieldControl FieldRenderingControl
{
取得
{
BaseFieldControl コントロール = 新機能 XYZZYCorporateLocationFieldControl();
コントロール。フィールド名 = この.InternalName;
戻り値 コントロール;
} //取得
} // fieldrenderingcontrol

パブリック オーバーライド 文字列 GetValidatedString(オブジェクト 値)
{
場合 (この.必須 || 値です。ToString().等しい(文字列.空))
{
スロー 新機能 SPFieldValidationException (「部門は割り当てられません。");
}
戻り値 ベース.GetValidatedString(値);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. 基本フィールド コントロールから継承する別のクラスを定義します。, ように:

パブリック クラス XYZZYCorporateLocationFieldControl : BaseFieldControl
{
保護 DropDownList XYZZYCorporateLocationSelector;

保護 オーバーライド 文字列 DefaultTemplateName
{
取得
{
戻り値 "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

パブリック オーバーライド オブジェクト
{
取得
{
EnsureChildControls();
戻り値 この.SelectedValue XYZZYCorporateLocationSelector。;
} // 取得
セット
{
EnsureChildControls();
この.XYZZYCorporateLocationSelector.SelectedValue = (文字列)この.ItemFieldValue;
} // セット
} // オブジェクト値をオーバーライドします。

保護 オーバーライド void CreateChildControls()
{

場合 (この.フィールド = = null || この.ControlMode = = SPControlMode.ディスプレイ)
戻り値;

ベース.CreateChildControls();

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

場合 (この.XYZZYCorporateLocationSelector = = null)
スロー 新機能 例外("エラー: 読み込むことができません。ASCX ファイル!");

場合 (!この.IsPostBack ページ。)
{

使用してください。 (SPSite サイト = 新機能 SPSite("http://localhost/enterprisedata"))
{
使用してください。 (SPWeb web サイトを =。OpenWeb())
{

SPList 現時点 web を =。リスト[「企業の場所"];

foreach (SPItem XYZZYCorporateLocation currentList.Items)
{
場合 (XYZZYCorporateLocation[「タイトル"] == null) 続行;

文字列 件名;
タイトル = XYZZYCorporateLocation[「タイトル"].ToString();

この.XYZZYCorporateLocationSelector.Items.Add
(新機能 ListItem(件名, 件名));

} // foreach

} // spweb の web を使用して site.openweb を =()
} // spsite のサイトを使用して新しい spsite を =("http://localhost/enterprisedata")

} // そうでない場合、ポストバック

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

上記のコードは基本的に DropDownList にある WSS カスタム リストから値を設定するロジックを実装します。 http://localhost/enterprisedata 名前付きの「企業部門」.

1 つの .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"server =" />
</テンプレート>
</
SharePoint:RenderingTemplate>

上記が c に保存されます。:\プログラム \ 共通ファイル \ ファイルにサーバー extensions12controltemplates.

  1. 最後に, 我々 に保存する XML ファイルを作成、... 12XML ディレクトリ. これは、カスタム データ型を定義する CAML と私の例, 次のような:

<?xml バージョン="1.0" エンコード="utf-8" ?>
<
フィールド型>
<
FieldType>
<
フィールド 名前="TypeName">CorporateLocations</フィールド>
<
フィールド 名前="ParentType">本文</フィールド>
<
フィールド 名前="TypeDisplayName">企業の場所</フィールド>
<
フィールド 名前="TypeShortDescription">製造用又はその他の施設を含むすべての XYZZY 企業の場所.</フィールド>
<
フィールド 名前="UserCreatable"></フィールド>
<
フィールド 名前="ShowInListCreate"></フィールド>
<
フィールド 名前="ShowInDocumentLibraryCreate"></フィールド>
<
フィールド 名前="ShowInSurveyCreate"></フィールド>
<
フィールド 名前="ShowInColumnTemplateCreate"></フィールド>
<
フィールド 名前="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, バージョン 1.0.0.0 を =, カルチャ ニュートラル =, PublicKeyToken = b0b19e85410990c4</フィールド>
<
RenderPattern 名前="DisplayPattern">
<
スイッチ>
<
Expr>
<
/>
</
Expr>

<ケース =""/>

<既定>
<
HTML>
<![CDATA[
<またがるスタイル ="色:「赤」><b>]]>
</
HTML>

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

<HTML><![CDATA[</b></スパン>]]></HTML>

</
既定>
</
スイッチ>

</
RenderPattern>
</
FieldType>
</
フィールド型>
この XML ファイル WSS"ライブラリにカスタム データ型を追加します" GAC に対してと一致するアセンブリがあった.

これらのすべてのビットを所定の位置に移動した後, サーバーとそれに iisreset 心地よく働いてすべてスタートする必要があります。.

WSS: CAML フィールド定義を作成する方法.

追加カテゴリ: CAML

ここで "クレイグという男が、偉大な投稿" CAML フィールド コンテンツ タイプに基づいてサイトから本物の定義の定義を見つけるための技術.

彼の投稿はそれをすべて言う. 簡単に言うと:

  1. コンテンツ タイプを作成します。.
  2. リストに関連付ける.
  3. SharePoint Designer でリストを開く.
  4. 「個人用 web パッケージ」をエクスポートします。.
  5. .Cab に変更します。.
  6. マニフェストを抽出します。.
  7. コンテンツ タイプと関連付けられた CAML を見つける.

WSS: 役に立つ機能/要素の/etc を有効にする手順の概要. 対の Intellisense 2005

追加カテゴリ: Visual Studio 2005

Intellisense 有効に便利な機能, 要素, visual studio で等します。 2005:

  1. WSS サーバーへのアクセスします。.
  2. "C に移動します。:\プログラムが \ 共通ファイル保存"
  3. 指している別の windows エクスプ ローラーを開く: "C:\プログラムを Visual Studio 8XmlSchemas"
  4. あなたの対を WSS サーバーから次のファイルをコピーします。 2005 スキーマ ディレクトリ:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. 対を再起動します。 2005
  6. プロジェクトに新しい XML ファイルを追加します。.
  7. XML ファイルの本文をクリックします.
  8. [プロパティ] ウィンドウ, "スキーマをクリックします" "wss.xsd を選ぶ" 選択肢の中から. (Wss.xsd から参照されているので、他の xsd を選択する必要はありません。).

その XML ドキュメントでは、Intellisense が有効になりました.

参照してください。 ここで WSS intellisense を任意の XML ファイルに自動的に関連付ける方法の詳細についてはこの主題と手順.

WSS 試験 70-541, Microsoft Windows SharePoint Services 3.0 – アプリケーション開発

今朝の上記のテストに合格したとり. 困難かつ公正である試験を発見.

この試験、ウェブ上の情報の相対的な不足があります。. 私はわからない理由.

私は明らかに撮った試験についての詳細には触れません, しかし、私は安全に次の言うことができるだと思う:

  1. このリンクを信頼します。: http://www.microsoft.com/learning/exams/70-541.mspx.

    試験とを渡すために知って必要なものが一覧表示されます。, IMO, 非常に正確です.

  2. また、リンクをお勧めします。 内部の Microsoft Windows SharePoint Services 3.0 テッド パティソンによって & Daniel ・ ラーソン. この本は、テストに対応するほぼすべての科目をカバーします。. 素晴らしいことに、それ自体の簡単な試験準備を超えてそれを見つけた. 偉大な例を提供し、本当に私を試していくつかの新たな、興味深いことを考える. 本の中でいくつかのビットをスキップする場合, ちょうど本の目次上からリンク内の項目と相互参照します。.
  3. 何も実際の実践的な経験に勝る. 時間と興味がある場合, 本の例と一緒に従うし、続いて試験. あなたよ、試験で簡単に時間を持っていると同様に本当に WSS アプリケーション プログラミングを学ぶ.

</終了>私のブログを購読します。!

MOSS / InfoPath フォームのサーバー (InfoPath 2007) ドロップ ダウン リストのパフォーマンス

追加カテゴリ: InfoPath

概要: InfoPath 2007 MOSS のカスタム リストに関連付けられたベンダーのドロップ ダウン リストを提供するフォーム MOSS サーバーに展開するには. 仕入先を選択します。, ルールは、一握りのセールス担当者名などのテキスト フィールドにフィールドの値を割り当てる, アドレス, 都市, 状態, 郵便番号と電話. パフォーマンスは恐ろしいです。. 我々 のパフォーマンスが悪化に気づく (非直線に) それぞれの追加フィールドにこのようにを更新します。. すなわち, 私達はちょうど場合営業担当者名を更新します。, かかる [x] 時間の量. もし我々 は営業担当者を更新, 住所 1, 住所 2, 都市, 状態, zip, かかる 10 長い時間.

ソリューション: Web サービスを作成します。 (サンプル コードを見つけることができます。 ここで) 仕入先の名前、渡され、バック ベンダーの詳細が返されます. [, この方法をフィールドに割り当てる. これはあまりにも思えるが低下します。, 差はなかった discernable のパフォーマンスで我々 が割り当てられたとき 1 対フィールド 8 フィールド. 追加ボーナスとして, ユーザーは、クールな"サーバーに接続を取得します。" サイロン 効果を呼び出すし、サービスの結果を処理するフォームを待っている間.

MOSS: 例外が発生しました. (HRESULT からの例外: 0x 80020009 (DISP_E_EXCEPTION))

更新プログラム: 我々 は再びこの問題とそれは決して表面の根本原因を決定.

我々 開発サイトの実装時に、突然の通知します。, 2 人のユーザーがサイト コレクションにアクセスすることはありません。. それらのアカウントのメインのサイトに認証することができます。, しかし、特定のサイト コレクションにアクセスしようとするとき, 彼らは、空白のスクリーンをちょうど得る. エラー表示なし, ちょうど白い空白のページ.

我々 は、サイト コレクションの管理者としてログインし、それらのユーザーの 1 つは、サイト管理者とこの時間として追加しようとしました。, 「OK」を押す時に, このメッセージを取得します。:

例外が発生しました. (HRESULT からの例外: 0x 80020009 (DISP_E_EXCEPTION))

これを研究に時間を費やして、残念ながら, 何の役に立つが来なかった. 診断ログにいくつかのメッセージがあった。, しかし、正確にこの問題に相関するは難しかった.

最後に, サイト コレクションを削除して、それとは、再作成されますそれを解決.

私は把握する場合この将来の原因は何, 私はこのポストが更新されます。.