在Repeater中使用FormView的FindControl方法

时间:2013-02-26 07:13:42

标签: asp.net sql-server vb.net findcontrol

我需要一些如何纠正我的代码的建议。我正在使用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属性时抛出Object引用错误。

2 个答案:

答案 0 :(得分:0)

您可以使用ItemDataBound事件在其中找到文本框。

由于

答案 1 :(得分:0)

你正在访问FormView中的"txtAddComment“,那你为什么要在Repeater中找到FormView,然后又在文本框中找到...你可以直接找到它...

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。我建议在oredr中使用NamingContainer属性来查找触发事件的FormView,通过这种方式您可以找到FormView,然后您可以轻松找到其中的TextBox。 Gridview Here

有NamingContainer的示例