0

コードを修正する方法についてアドバイスが必要です。FindControl メソッドを使用して、Repeater 内の TextBox を検索しています。これは私のマークアップです:

<asp:Repeater ID="Repeater1">
    HERE ARE SOME OTHER DATA
    <ItemTemplate>
         <asp:FormView ID="FormViewAddComment" runat="server"
             DataSourceID="SqlDataSourceInsertComments" DefaultMode="Insert"
             OnItemInserted="FormViewAddComment_ItemInserted" 
             OnItemInserting="FormViewAddComment_ItemInserting">
             <InsertItemTemplate>
                 <asp:TextBox ID="txtAddComment" runat="server" CssClass="textbox"
                     Text='<%# Bind("CommentText") %>' Width="200px" />
                 <asp:Button ID="btnAddComment" runat="server" CssClass="button"
                      Text="Comment" CommandName="Insert" CausesValidation="false"/>
             </InsertItemTemplate>
         </asp:FormView>  
    </ItemTemplate>
</asp:Repeater>

そして、これは私のコードビハインドです:

Protected Sub FormViewAddComment_ItemInserting(sender As Object, e As FormViewInsertEventArgs)
    Dim FormView As FormView = DirectCast(Repeater1.FindControl("FormViewAddComment"), FormView)
    Dim Comment As TextBox = DirectCast(FormView.FindControl("txtAddComment"), TextBox)
    If Comment.Text = "" Then
        Exit Sub
    End If
End Sub

Comment TextBox が見つからず、コードが Text プロパティにアクセスしようとすると、オブジェクト参照エラーがスローされます。

4

2 に答える 2

0

ItemDataBound イベントを使用して、その中のテキスト ボックスを見つけることができます。

ありがとう

于 2013-02-26T07:32:42.803 に答える
0

FormView にある "にアクセス"txtAddCommentしているのに、なぜ FormView を Repeater で見つけて、その中のテキストボックスでもう一度見つけるのですか...直接見つけることができます...

Protected Sub FormViewAddComment_ItemInserting(sender As Object, e As FormViewInsertEventArgs)
        If (FormView1.CurrentMode == FormViewMode.Insert)      
            Dim Comment As TextBox = DirectCast(FormViewAddComment.FindControl("txtAddComment"), TextBox)
        If Comment.Text = "" Then
            Exit Sub
        End If
    End Sub

編集:-

私のポイントは、ItemInsertingイベントのコードを書いているFormViewので、FormView を直接見つけることができるということですNamingContainer。oredr でプロパティを使用して、イベントをトリガーした FormView を見つけることをお勧めします。この方法で FormView を見つけることができます。その中の TextBox を簡単に見つけることができます。ここにGridviewのNamingContainerの例があります

于 2013-02-26T07:34:23.097 に答える