0

特定のシナリオで問題が発生しています。リピーター コントロールがあり、その中にプレースホルダーがあります (テストのために、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 オブジェクト参照になってしまいます。

4

3 に答える 3

1

イベント ハンドラーFindControlでネストされたコントロールを取得するために使用します。これにより、コントロールが返されます。rptSpecialNotes_Item

sender.FindControl("specialNotes")

型を返すControlため、その型の特定のプロパティとメソッドを使用する場合は、適切な型へのキャストが必要です。

于 2012-08-01T20:01:51.837 に答える
0

よくわかりませんが、これが役立つかもしれません:

<asp:imagebutton runat="server" AlternateText="edit" ImageUrl="images/controls/Globe.png" width="40" height="40" CommandName="edit" CommandArgument='<%# Container.ClientID & "," &  eval("ItemID") %>'></asp:imagebutton>

また、FindControl メソッドの場合は、ItemDataBound イベントで。

Dim plh As PlaceHolder = e.Item.FindControl("YOURCONTROLID")
于 2012-08-01T20:18:20.627 に答える
0

rptSpecialNotes_Item コマンド イベント ハンドラーで:

Dim plh As PlaceHolder = CType(e.Item.FindControl("plhSpecialNotesRepeater"), PlaceHolder)

plh.Controls.Add(lbl)
于 2012-08-01T20:46:58.467 に答える