2009-07-03 9 views
2

Sharepoint OOTBにあるカスタムフィールドタイプを作成しました。違いは、エンドユーザーが名前を確認する必要がない、つまりDropDownListに置き換えたという点だけです。ドロップダウンリストには、 SPFieldUserから継承するFieldClassと、UserFieldから継承するFieldControlClassを作成しました。それは、すべての条件でうまくいきます。つまり、ListまたはDocument Libararyを作成すると、DropDownList がそれぞれのユーザーに表示されます。OKと言った後、私のアイテムが作成されます。インワイ-SVR2の\ tjagtap、次のように私はPerson&GroupカスタムフィールドタイプSharepoint

public override object Value 

{ 

    get 
    { 
     SPUserCollection userscollection = rootWeb.SiteUsers; 
     //ddlInfoBox is a DropDownList to which I have Binded the collection of users in the form of string 
     SPUser user = userscollection.Web.EnsureUser(this.ddlInfoBox.SelectedValue); 
     SPFieldUserValue userval = new SPFieldUserValue(user.ParentWeb, user.ID, user.LoginName); 

     return userval; 
    } 

    set 
    { 
     SPFieldUserValue userval = (SPFieldUserValue) this.ItemFieldValue;   
     this.ddlInfoBox.SelectedValue = userval.Lookupvalue; //Here look up value is nothing but a Login name e.g In-Wai-Svr2\tjagtap 
    } 
} 

。これにより、現在のListItemのカスタムフィールドの値がSPFieldUserValue例えばとして保存されます上記のプロパティ27#に、FieldControlClassでValueプロパティをオーバーライドしています。

主な問題は、この特定のListItemが一覧ページビュー、たとえばAllItems.aspxまたはそれに関連付けられたカスタムビューページに表示されている場合、テキスト付きのHyperLinkのInstanceとして、 という数値が27として表示されます「In-Wai-Svr2 \ tjagtap」、PostBackURLは「/_layouts/userdisp.aspx?ID=27」としてください。

このアイテムを編集すると、ドロップダウンリストで選択されたそれぞれの値が表示されます。また、このアイテムを表示している間、DispForm.aspxにもハイパーリンクが表示されます。私は createchildcontrol()メソッドでカスタムロジックを書き込むことでそれを達成しました。つまり、NewまたはEditの場合はControlModeを使用し、次にドロップダウンリストを入力し、Displayの場合はItemFieldValue Typeを取得し、SPFieldUserValueにキャストして対応するlookupidとvalueを取得します。 URLを作成し、HyperLinkのTextを表示するためのものです。

私はHyperlinkをUserID(27)のナビゲーションinstedを持つユーザー名としてリストビューページ(AllItem.aspxなど)の文字列として検索して持ってきましたが、研究の私は、htmlコードを指定することによってあなたが望むようにDisplayPatterenを定義する規定があるフィールド型定義XMLファイルを使用することによって、そのような種類の機能性を達成する方法があるかもしれないことを見出した。しかし、ここに問題があります。私の問題を解決するIn-Wai-Svr2 \ tjagtapのようなアンカータグを作るために、In-Wai-Svr2 \ tjagtap inorderのようなそれぞれのUserNameを持つUserID(27)をどのように取得できますか? DisplayPatterenのスイッチのDefault caseステートメント内にこのアンカータグをコーディングしましたが、AllItems.aspxのフィールド値が In-Wai-Svr2 \ tjagtap27として表示されます。つまり、xmlファイルで定義された値が文字列値と連結されています(27)。

上記の2つの問題を解決するのを手伝ってください。私は本当にこの問題をできるだけ早く解決する必要があります。

おかげで&よろしく、 Tejas Jagtap

答えて

0

uは、カスタムフィールドクラスのGetFieldValueAsHtml()メソッドまたは多分RenderFieldForDisplay()カスタムフィールドコントロールクラスでメソッドをオーバーライドしてみました。

0

ユーザフィールドタイプのDisplayPattern CAMLを使用できますか?

関連する問題