ASP.Net Кнопка в codebehind, которая вызывает функцию codebehind - PullRequest
3 голосов
/ 27 июля 2010

Я использую 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

Наряду с этим у меня есть следующие две функции в моем коде, которые я хочу вызывать при нажатии кнопок.

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

Ответы [ 2 ]

3 голосов
/ 27 июля 2010

Атрибуты. Функция Add () используется для добавления атрибутов HTML к элементам на странице.Итак, вы добавляете клиентский скрипт в свой код.Чтобы добавить код позади события к вашей кнопке, используйте следующий код:

   btn1.Click += new EventHandler(btn1_Click);
2 голосов
/ 27 июля 2010

nandokakimoto правильно, но синтаксис в VB:

AddHandler btn1.Click, AddressOf btn1_Click

Странный синтаксис, когда вы не используете скобки, хотя AddHandler выглядит как функция.

Привет

...