codebehind中调用codebehind函数的ASP.Net按钮

codebehind中调用codebehind函数的ASP.Net按钮,asp.net,vb.net,web-applications,Asp.net,Vb.net,Web Applications,我使用的是Telerik RadControls,在我的代码隐藏中,我有以下功能,其中一部分在页脚添加了按钮 Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As GridItemEventArgs) If TypeOf e.Item Is GridDataItem Then Dim editLink As HyperLink = DirectCast(e.Item.Fi

我使用的是Telerik RadControls,在我的代码隐藏中,我有以下功能,其中一部分在页脚添加了按钮

Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As GridItemEventArgs)
        If TypeOf e.Item Is GridDataItem Then
            Dim editLink As HyperLink = DirectCast(e.Item.FindControl("EditLink"), HyperLink)
            editLink.Attributes("href") = "#"
            editLink.Attributes("onclick") = [String].Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues(e.Item.ItemIndex)("ID"), e.Item.ItemIndex)
        End If

        ''Add buttons to footer of grid
        If TypeOf e.Item Is GridFooterItem Then
            Dim footerItem As GridFooterItem = e.Item
            ''Creat Ticket button
            Dim btn1 As New Button()
            btn1.Text = "Create Ticket"
            btn1.Attributes.Add("runat", "server")
            btn1.Attributes.Add("OnClick", "btnCreate_Click")
            footerItem.Cells(2).Controls.Add(btn1)
            ''Show All Tickets button
            Dim btn2 As New Button()
            btn2.Text = "Show All Tickets"
            btn2.Attributes.Add("runat", "server")
            btn2.Attributes.Add("OnClick", "btnAll_Click")
            footerItem.Cells(2).Controls.Add(btn2)
        End If

    End Sub
除此之外,我的codebehind中还有以下两个函数,我希望在单击按钮时调用它们

Protected Sub btnCreate_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Response.Redirect("itrequest.aspx", False)
End Sub

Protected Sub btnAll_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Response.Redirect("itall_v2.aspx", False)
End Sub
我的问题是这些函数没有在呈现页面中被调用。让我困惑的是,当我在标记中用相同的属性定义这些按钮时,它们工作得很好。我不明白在标记中定义按钮和代码隐藏之间有什么区别。为什么这些函数不能从我在代码背后定义的按钮中调用?为测试目的,我在标记中注释掉的按钮如下所示

 <%--<asp:Table ID="Table2" runat="server" HorizontalAlign="Left">
    <asp:TableRow>
        <asp:TableCell>
            <br />
            <asp:Button ID="Button1" runat="server" Text="Create Ticket" OnClick="btnCreate_Click" />
            <asp:Button ID="Button2" runat="server" Text="Show All Tickets" OnClick="btnAll_Click" />
        </asp:TableCell>
    </asp:TableRow>
</asp:Table>--%>

Attributes.Add()函数用于向页面中的元素添加HTML属性。因此,您正在代码中添加客户端脚本。要向按钮添加代码隐藏事件,请使用以下代码:

   btn1.Click += new EventHandler(btn1_Click);

nandokakimoto是正确的,但VB中的语法是:

AddHandler btn1.Click, AddressOf btn1_Click
一种奇怪的语法,即使AddHandler看起来是一个函数,也不使用括号


问候

感谢南道秋本和bgs264的帮助。