特定のシナリオで問題が発生しています。リピーター コントロールがあり、その中にプレースホルダーがあります (テストのために、div を配置してそれも試しました)。コードビハインドページで、そのプレースホルダーまたはdivを見つけて、そこにコントロールを配置したいと思います(今のところ、3つのテキストボックスと2つのボタン)
コントロールをプレースホルダーに追加することに問題はありません。それがどのように機能するかを理解しています。ここで取得できないのは、この動的コントロールをここで見つける方法です。
ここに、私がやろうとしていることを説明するのに役立ついくつかのコード スニペットを示します。
(ASP)
<asp:Repeater id="rptSpecialNotes" runat="server">
<ItemTemplate>
<asp:UpdatePanel ID="udpSpecialNotesRepeater" runat="server">
<ContentTemplate>
<asp:PlaceHolder ID="plhSpecialNotesRepeater" runat="server">
</asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
<p><%# eval("subject") %></p>
<div id="specialNotes" runat="server"></div>
<asp:imagebutton runat="server" AlternateText="add Motion" ImageUrl="images/controls/Exclaim.png" width="40" height="40"></asp:imagebutton>
<asp:imagebutton runat="server" AlternateText="add document" ImageUrl="images/controls/Documents.png" width="40" height="40"></asp:imagebutton>
<asp:imagebutton runat="server" AlternateText="move up" ImageUrl="images/controls/Arrow-Up.png" width="40" height="40" CommandName="moveUp" CommandArgument='<%# Container.ItemIndex & "," & eval("ItemID") %>'></asp:imagebutton>
<asp:imagebutton runat="server" AlternateText="move down" ImageUrl="images/controls/Arrow-Down.png" width="40" height="40" CommandName="moveDown" CommandArgument='<%# Container.ItemIndex & "," & eval("ItemID") %>'></asp:imagebutton>
<asp:imagebutton runat="server" AlternateText="delete" ImageUrl="images/controls/Delete.png" width="40" height="40" CommandName="delete" CommandArgument='<%# Container.ItemIndex & "," & eval("ItemID") %>'></asp:imagebutton>
<asp:imagebutton runat="server" AlternateText="edit" ImageUrl="images/controls/Globe.png" width="40" height="40" CommandName="edit" CommandArgument='<%# Container.ItemIndex & "," & eval("ItemID") %>'></asp:imagebutton>
</ItemTemplate>
</asp:Repeater>
画像ボタンの編集は、rptSpecialNotes_Item コマンドを実行します。このコマンドは、次のようなメソッド (特別なメモの編集) を呼び出します。
Dim commandArguments() As String = Split(e.CommandArgument, ",")
Dim divId As String = commandArguments(0)
Dim itemId As String = commandArguments(1)
'determine action based on command name
If e.CommandName = "edit" Then
Call editSpecialNotes(itemId,divId)
End If
および編集特記事項は、指定された divID に物を配置することです。これを機能させるために、存在することがわかっている静的な値 (rptSpecialNotes_plhSpecialNotesRepeater_1) またはそれに類似した値を divID に指定しました。ただし、常に null オブジェクト参照になってしまいます。