1

ここに私がプレースホルダーで抱えている問題があります:

リピーターがあり、そのリピーター内にアイテム テンプレートがあります。現在、このテンプレートはいくつかの表でフォーマットされていますが、この質問では、読みやすくするためにそれらを削除しました。

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

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

次に、イベント OnItemDataBound で、新しいプレースホルダーを作成し、既存の on (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 プレースホルダーで更新されない理由はありますか? 乾杯

4

2 に答える 2

1

OnItemDataBound では、コントロールを追加するには遅すぎる可能性があります。OnItemCreated で試してみて、それが役立つかどうかを確認してください。これは簡単なテストです。リピーター イベント宣言を次のように変更するだけです。

OnItemCreated="R1_ItemDataBound"

このアイデアが役に立たない場合は、簡単に元に戻すことができます。

編集 - 何かに気づきました。RadioButtonList を設定するには、次のように ListItems を使用する必要があります。

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

これがおそらく RadioButtonList が表示されなかった理由ですが、唯一のラジオ ボタンは機能していました。

于 2010-03-11T13:58:39.730 に答える
0

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

于 2010-03-11T13:50:31.560 に答える