質問

ここで私はプレースホルダとが午前問題があります:

私は、リピータを持っており、そのリピータの中に、私は項目テンプレートを持っています。今、このテンプレートは、テーブルのカップルでフォーマットされていますが、この質問のために私が読み、物事を容易にするために、それらを削除してます:

<asp:Repeater ID="Repeater1" OnItemDataBound="R1_ItemDataBound" runat="server">

   <ItemTemplate>
      <asp:PlaceHolder ID="phAnswers" runat="server"></asp:PlaceHolder>               
   </ItemTemplate>
</asp:Repeater>

次に、イベントOnItemDataBoundに、私は、しかし、プレースホルダが作成されているラジオボタン/ textboxsで更新されていないことバインド上の既存の(phAnswers)に、新しいプレースホルダを作成します

    Dim rdList As New RadioButtonList
    Dim newRadio As New RadioButton

 If (e.Item.ItemType = ListItemType.Item) Or _
        (e.Item.ItemType = ListItemType.AlternatingItem) Then

        Dim tempPH As PlaceHolder

        tempPH = e.Item.FindControl("phAnswers")

        For x As Integer = 0 To (t_MC.Count - 1)

                newRadio = New RadioButton

                newRadio.ID = "Answer" + x.ToString
                newRadio.Text = t_MC(x).Value
                rdList.Controls.Add(newRadio)

            Next

   tempPH.Controls.Add(rdList)

phAnswersが新しいtempPHプレースホルダで更新されていない理由を任意のアイデア? 乾杯

役に立ちましたか?

解決

OnItemDataBoundは、コントロールを追加するには遅すぎるかもしれません。 OnItemCreatedでそれを試してみて、それが助けかどうかを確認します。それは簡単なテストだ - ちょうどこのようなあなたのリピータイベント宣言を変更します。

OnItemCreated="R1_ItemDataBound"
このアイデアが解決しない場合は、

、あなたは簡単に切り替えることができます。

編集 - 私はちょうど何かに気づきました。 RadioButtonListのを移入するには、次のようなリストアイテムを、使用する必要があります:

ListItem item - new ListItem("your text", "your value");
rdList.Items.Add(item);

あなたのRadioButtonListは表示されませんでした理由は、おそらくですが、唯一のラジオボタンが働いています。

他のヒント

Panelの代わりにPlaceHolderを使用してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top