2009-06-17 8 views
0

私はリピーターをページングタグクラウドの一種として使用しています。これを行うには、Page、Viewなどの単純なプロパティをページ、RowCountなどに追加しました。簡単な方法でWebサーバーコントロールを継承しますか?

私はそこに属していないように感じますが、サーバーコントロール、デバッグ、dllおよび展開。

Repeaterクラスを継承し、ControlState/ViewStateプロパティをいくつか追加して、Repeaterをそのままツールボックスからドラッグすることができますか?以下の単純なクラス持つ

ここ

、新しいWebControlLibraryプロジェクトを作成せずに

public class TagCloud : Repeater 
{ 
    public int selectedIndex; 

    public TagCloud() 
    { 
     selectedIndex = -1; 
     // 
     // TODO: Add constructor logic here 
     // 
    } 

    public int SelectedIndex 
    { 
     get { return selectedIndex; } 
     set { selectedIndex = value; } 
    } 
} 

は、このCSファイルは、App_Codeフォルダーに立つと予想されるように仕事ができますか?

ありがとうございました。

答えて

0

はい、問題ありません。限り、あなたは、コントロールのプロパティの構文を使用して:あなたの特性を作るために、また

公共のint行カウント
{

get { return (int) (ViewState["RowCount"] ?? 0); } 
    set { ViewState["RowCount"] = value; } 

}

をデフォルトのものと同じに見えますが説明を追加することができますかDefaultValue属性。

+0

私はViewStateを使用するプロパティを宣言する方法を知っています。属性が不足している場合は、ツールボックスに「TagCloud」がないため、おそらくクラスレベルにあります。 – maxbeaudoin

+1

カスタムコントロールをツールボックスに追加するには、新しいdllプロジェクトでカスタムコントロールを作成し、ツールボックスを[項目の選択]プロパティで追加する必要があります。 –

+0

これは、次のように使用する方法です: <任意:TagCloud ID = "TagCloud1" runat = "サーバー"> デフォルトのリピーターのデザイナー。 – maxbeaudoin

0

これは機能し、サーバーコントロールを構築するための1つの推奨方法です。それを試してみてください。

+0

私は単純なintプロパティを持つRepeaterから継承するクラスTagCloudを持っています。コントロールがツールボックスに公開されていないように見えるので、属性が不足しているはずです。私はそうするために必要な最低限のものが必要です。 – maxbeaudoin

0

ASP Repeaterからの継承は、構築しているコントロールが追加のプロパティを持つリピータである限り、完全に有効なアプローチです。

あなたが必要とするコントロールが、実際にはコントロールセットの一部としてリピーターを持つ「何か他のもの」であると感じる場合は、リピーターをコントロールコレクションに追加するコンポジットコントロールを作成する必要があります。他のコントロールが必要なものは何でも。

たとえば、リピーター、検索結果のラベル、リピーターのコンテンツの上部と下部に移動するリンクなどを持つコントロールを使用することができます。このコンポジットコントロールはリピーターではなく、リピータを使用しています。

+0

私の質問を明確にしました。 – maxbeaudoin

関連する問題