2012-01-26 6 views
0

以下のコードを使用して、アコーディオンコントロールでダイナミックペインを作成しています。情報はデータセットから読み込まれ、その情報に基づいてコントロールが生成されます。私は今、これらのコントロールを見つけることについて立ち往生しています。ユーザーがボタンをクリックすると、すべてのコントロールをループしてテキストボックス内の情報を取得する必要がありますが、本当に知る必要があるのは、どのように呼び出すかです。ダイナミックコントロール(アコーディオンペイン)の検索

 Do Until b = 0 
      holder = ds.Tables(0).Rows(i).Item("Issue" & z).ToString 
      If holder <> "" Then 
       lblTitle = New Label() 
       txtContent = New TextBox() 
       lblTitle.Text = "Issue" & z & " " & ds.Tables(0).Rows(i).Item("Issue" & z) 
       txtContent.Text = ds.Tables(0).Rows(i).Item("Issue" & z) 
       pn = New AjaxControlToolkit.AccordionPane() 
       pn.ID = "Pane" & z 
       pn.HeaderContainer.Controls.Add(lblTitle) 
       pn.ContentContainer.Controls.Add(txtContent) 
       arcPane.Panes.Add(pn) 

      End If 
      pncount = pncount + 1 
      z = z + 1 
      b = b - 1 
     Loop 

答えて

-1

すべてのコントロールには、コントロールという名前のプロパティがあります。これは直接の子コントロールのコレクションです。それらをループすることができます。あなたが望むものを見つけるまで、それらを1つずつ調べることができます。各コントロールインスタンスには、FindControlというメソッドもあります。このメソッドを使用して、IDでコントロールをルックアップできます。あなたはこのようにそれらを見つけることができるはずです。最初の共通の親コントロール(arcPaneなど)から開始します。

foreach (Control pane in arcPane.Panes) 
{ 
    foreach (Control c in pane.ContentContainer.Controls) 
    { 
     //examine c.ClientID or c.GetType() or some other 
        //property that you can recognize the control by 
    } 
} 
+0

まだ困難があります。私のCからVBへの変換になるかもしれません(あまり良くありません!)。 – user697508

+0

上記のコードと同等のvbと思われるものを貼り付けます –

+0

動的に作成されたので、コントロールがアコーディオンオーバーポストバックから消去されるため、これはうまくいきません。したがって、arcPane.Panes.Countは0になります。 – clamchoda

関連する問題