2010-07-27 162 views
2

我在使用Telerik RadControls,在我的代码隐藏中我有以下功能,其中一部分将按钮添加到页脚。ASP.Net在代码隐藏的调用代码隐藏功能的按钮

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 

随着这个,我有我的代码隐藏以下两个函数,我希望在点击按钮时调用。

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>--%> 

回答

1

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

AddHandler btn1.Click, AddressOf btn1_Click 

一个奇怪的语法,其中,你不这样做即使AddHandler看起来是一个函数,也可以使用括号。

Regards

2

Attributes.Add()函数用于将HTML属性添加到页面中的元素。所以你要在代码中添加客户端脚本。为了后面的事件代码添加到您的按钮,使用中应使用如下代码:

btn1.Click += new EventHandler(btn1_Click); 
+0

感谢nandokakimoto和bgs264的帮助。 – kingrichard2005 2010-07-27 15:49:17