asp中的ImageButton不会触发onclick事件

时间:2014-07-27 12:15:25

标签: asp.net .net vb.net imagebutton

环境:VS2012,jquery和VB代码背后

中的一个简单的imageButton
<td><asp:imageButton onClick="Function generated by vs" ..>

当客户端点击此时,不会触发任何事件。 使用带有updatePanel和触发器imageButton的listview的另一个代码仍存在同样的问题。

当我使用简单的Html页面时,此代码有效但当我有母版页时不起作用吗?

<table id="tableImg" class="tableImage">
    <tr>
        <td>
            <asp:ImageButton ID="PagerLeft" CssClass="divPagerLeft"
                    ImageUrl="~/Medias/Config/SliderMoveLeft.gif"
                    OnClick="PagerLeft_Click"
                    runat="server" />
        </td>
        <td class='tdImage'>
            <asp:Image ID="img1" ClientIDMode="Static" CssClass="imgIntoGallery" ImageUrl="/" AlternateText="img1" runat="server" />
        </td>

        <td class='tdImage'>
            <asp:Image ID="img2" ClientIDMode="Static" CssClass="imgIntoGallery" ImageUrl="/" AlternateText="img1" runat="server" />
        </td>

        <td class='tdImage'>
            <asp:Image ID="img3" ClientIDMode="Static" CssClass="imgIntoGallery" ImageUrl="/" AlternateText="img1" runat="server" />
        </td>

        <td class='tdImage'>
            <asp:Image ID="img4" ClientIDMode="Static" CssClass="imgIntoGallery" ImageUrl="/" AlternateText="img1" runat="server" />
        </td>

        <td class='tdImage'>
            <asp:Image ID="img5" ClientIDMode="Static" CssClass="imgIntoGallery" ImageUrl="/" AlternateText="img1" runat="server" />
        </td>

        <td class='tdImage'>
            <asp:Image ID="img6" ClientIDMode="Static" CssClass="imgIntoGallery" ImageUrl="/" AlternateText="img1" runat="server" />
        </td>
        <td>
            <asp:ImageButton ID="PagerRight" ClientIDMode="Static" CssClass="divPagerRight"
                 ImageUrl="~/Medias/Config/SliderMoveRight.gif"
                 OnClick="PagerRight_Click"
                 runat="server" />
        </td>
    </tr>
</table>



CODE BEHIND :-

Protected Sub btnRight_Click(sender As Object, e As EventArgs)
    ClientScript.RegisterStartupScript(Me.[GetType](), "alert", "alert('RightClick')", True)
    Dim start_index As Integer = 0
    If (ViewState("start_index") Is Nothing) Then
        ViewState("start_index") = 0
    Else
        start_index = Convert.ToInt32(ViewState("start_index"))
    End If
    If (start_index < nbrRows - PageSize) Then
        start_index += 1
        ViewState("start_index") = start_index
        idxFrom = start_index
        idxTo = idxFrom + PageSize
        getImgFromSql()
    End If

End Sub

2 个答案:

答案 0 :(得分:0)

您还没有发布事件处理程序的代码,而不是PagerLeft和PageRight。您已经发布了一个btnRight的代码,该代码在您的aspx页面上不存在,它似乎也无法处理点击事件。

要处理按钮的单击事件,您始终可以按如下方式声明该函数:

Public Sub PagerLeft_Click(sender as Object, e As EventArgs) Handles PagerClick.Click
    'Do code
End Sub

执行此操作您可以从HTML中删除OnClick文本,因为这将自动触发,因为服务器会在呈现页面之前自动生成OnClick HTML。

您是否能够确认是否已定义这些点击事件方法?

答案 1 :(得分:0)

Onclick =“Event”需要是代码隐藏中sub的名称。例如,PagerRight的Onclick事件需要更改为btnRight_Click才能调用该子。

<asp:ImageButton ID="PagerRight" ClientIDMode="Static" CssClass="divPagerRight"
                 ImageUrl="~/Medias/Config/SliderMoveRight.gif"
                 **Onclick="btnRight_Click"**
                 runat="server" />

另一种方法是从图像按钮中删除Onclick,并在Sub行的末尾键入Handles PagerRight.Click。

Protected Sub btnRight_Click(sender As Object, e As EventArgs) Handles PagerRight.Click

End Sub