2011-10-25 5 views
2

は、私は次のコード行で、Sharepointの2010年に視覚的なWebパーツでパネルにカスタムユーザーコントロールを追加しようとしているSharepointの2010年にユーザーコントロールを追加します私のユーザーコントロールはロード/レンダリングに失敗します。上記のコードは、リンクボタンをクリックするとトリガーされます。はプログラム

私は何かを見逃しているのですか、それともこのようにすることはできませんか?

答えて

3

ユーザーコントロールは12/14ハイブに格納されているため、ユーザーコントロールのパスを明確に参照する必要があります。

<%@ Register TagPrefix="MyPrefix" Namespace="MyNameSpace.MyControl" 
    Assembly="MyAssemby"%> 

<MyPrefix:MyControl ID="MyId" runat="server" /> 
:あなたも(あなたがそれを置くている場所によって決定される)のような何かを行うことにより、Webパーツ/ページ/コントロールに直接追加することができ、

private const string _ascxPath = @"~/_CONTROLTEMPLATES/ProjectFolder/controlname.ascx"; 

MyControl MyUserControl = (MyControl)LoadControl(_ascxPath); 

Controls.Add(MyUserControl); 

をしかし:ザッツはなぜあなたは常に行う必要があります

2

LoadControlメソッドを使用する必要があります。参照:How to: Create Instances of ASP.NET User Controls Programmatically

+0

私は実際にそのアプローチを試みましたが、最初の引数としてユーザーコントロールの型を受け入れるLoadControlオーバーロードを使用しました: 'MyUserControl myUserControl =(MyUserControl)LoadControl(typeof(MyUserControl)、new object [] {}) ; ' しかし、そのアプローチは私のためには機能しませんでしたが、pユーザコントロールの物理的な位置は魅力的に働いた。最初のアプローチが私にとってうまくいかなかった理由は何ですか? –