【问题标题】:ImageButton in asp doesn't fire on onclick eventasp中的ImageButton不会在onclick事件上触发
【发布时间】:2023-04-01 10:59:01
【问题描述】:

环境:VS2012、jquery和VB代码后面 这是一个简单的 imageButton

<td><asp:imageButton onClick="Function generated by vs" ..>

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

此代码在我使用简单的 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

【问题讨论】:

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


    【解决方案1】:

    除了 PagerLeft 和 PageRight 之外,您还没有发布事件处理程序的代码。您已经为您的 aspx 页面上不存在的 btnRight 发布了代码,它似乎也没有处理单击事件。

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

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

    这样做您可以从 HTML 中删除 OnClick 文本,因为 OnClick HTML 将在页面呈现之前由服务器自动生成。

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

    【讨论】:

      【解决方案2】:

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

      <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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        相关资源
        最近更新 更多