2011-02-07 20 views
1

Select Caseステートメントでロードされるユーザーコントロールがいくつかあります。しかし、これらのコントロールをロードするメインページのコードファイルでは、intellisenseにaspコントロールが表示されません。私はコントロールが条件付きで読み込まれているからだと感じました。私の質問は、これを解決する最良の方法は何ですか?VB.Net ASP:ユーザーコントロール内のコントロールにアクセス

1)コントロールを読み込んで、Select Caseを背後のコードで非表示にするかどうかを指定します。

2))(擬似コードを言うことがある方法です:LoadUserControl("UserControl1").Controls("tbTest").Text = ""

3)どのように私は、ユーザーコントロールファイルにデータセットを渡すことができますか?

4)他のアイデアはありますか?

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

更新

これは私がサブコ​​ントロールで制御し、アクセスの値をロードすることができます。ただし、更新プログラムが動作していないようです。何か案は?

Private Sub SetFrequencyValues(ByVal frequency As Integer) 
    Select Case frequency 
     Case 2 
      Dim userControl As Minutes = CType(LoadControl("Frequency/Minutes.ascx"), Minutes) 
      Dim tb As TextBox = userControl.FindControl("tbMinutes") 
      tb.Text = "10" 
      tb.Visible = False 
     Case(4) 
     Case 5 
     Case 6 
    End Select 
End Sub 
+0

私の更新を確認します。 – Luke

答えて

1

あなたはあなたのコントロール

dim uc as MyUserControl = cType(LoadUserControl("UserControl1"), MyUserControl) 

にそれらをCTYPEことができ、あなたのMyUserControlはあなたが設定したい場合がありますことを、いくつかのプロパティを持っている可能性がどのように表示されますコントロールわかっている場合

MyUserControl.Data = mySelectedData 

同じコントロールを使用しない場合は、インターフェイスの使用を検討することがあります。

Public Interface IDataForUserControl 
    Public Property Data as Object 
End Interface 

次に、このインターフェイスを実装できます。インターフェイスをロードすると、インターフェイスにキャストしようとする可能性があります。

これらの2つの可能性がない場合は、ITemplatesとNamingContainerを使用できます。

Dim control as new MyNamingContainerThatImplementsIDataItem 
LoadTemplate("UserControl1").instantiateIn(control) 

UserControl1では、DataBinderを使用してDataにアクセスできます。

あなたの更新のための回答

いくつかのオーバーライドどこかにあるかもしれません。いつあなたの更新機能を呼び出していますか?たぶん、mintues.ascxが "ロード"イベントなどで同じデータを設定している可能性があります。

SetFrequencyValuesメソッドでアクセスする「userControl」にメソッドを作成することもできますが、それ以上は触れることはできません。または、あなたのユーザコントロールのイベントを処理してください。

dim userCOntrol as Minutes = Loadcontrol("Minutes.ascx") 
AddHandler userControl.load, sub(sender as Minutes, e as eventargs) 
            sender.mytextbox.text = "10" 
          end sub 

または前もって何をしたいのですか?

+0

これは、コントロールをロードしました。唯一の問題は、それを更新することだけです。たとえば、コントロールをロードしてユーザーコントロール内のコントロールの1つにアクセスすると、ボックスに値が表示されます。しかし、私が価値を変えたいならば、それは固執しません。上記のコードでコードを投稿します。ありがとう。 – XstreamINsanity

関連する問題