2010-07-27 7 views
2

J'utilise Telerik RadControls, dans mon codebehind j'ai la fonction suivante, dont une partie ajoute des boutons au pied de page.ASP.Net Bouton dans codebehind qui appelle la fonction codebehind

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 

Parallèlement à cela je les deux fonctions suivantes dans mon codebehind que je souhaite appeler lorsque les boutons se cliqués.

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 

Mon problème est que ces fonctions ne sont pas appelées dans la page rendue. Ce qui me dérange, c'est que lorsque je définis ces boutons avec les mêmes attributs dans le balisage, ils fonctionnent bien. Je ne comprends pas la différence entre la définition des boutons dans le balisage et le code derrière. Pourquoi ces fonctions ne sont-elles pas appelées à partir des boutons que je définis dans le code? Les boutons qui fonctionnent et que j'ai commentés dans mon balisage à des fins de test sont les suivants.

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

Répondre

1

nandokakimoto est correct, mais la syntaxe est en VB:

AddHandler btn1.Click, AddressOf btn1_Click 

Une syntaxe étrange où vous ne utiliser des crochets même si AddHandler semble être une fonction.

Cordialement

2

La fonction Attributes.Add() permet d'ajouter des attributs HTML aux éléments de la page. Vous ajoutez donc un script côté client dans votre code. Pour ajouter un code derrière événement à votre bouton, utilisez doit utiliser le code suivant:

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

Merci à nandokakimoto et à bgs264 pour votre aide. – kingrichard2005

Questions connexes