通过在网格视图中使用image按钮在代码隐藏中调用函数

本文关键字:代码 按钮 调用 函数 image 隐藏 网格 视图 | 更新日期: 2023-09-27 18:20:40

我在.aspx中的GridView中有一个ImageButton。在单击该ImageButton时,我必须调用一个函数。这就是我尝试的方式,但函数没有被调用。代码内部.aspx页面:

<GridView ......>
    <asp:HyperLink ID="HyperLink2" runat="server" 
        NavigateUrl='<%# DataBinder.Eval(Container.DataItem,"VehID","mngVeh.aspx?delid={0}") %>'>   
        <asp:ImageButton runat="server" ID="DeleteUrlImageButton" 
            width='24' height='24'
            ImageUrl="~/images/delete.jpeg" 
            OnClick="DeleteUrlImageButton_Click"
            OnClientClick="return confirm('Are you sure you want to delete?');" />
        <!--<img src="images/delete.jpeg" alt='edit' border="0" width='24' height='24'/> -->
   </asp:HyperLink>
</GridView>

.aspx.cs页面中的代码:

public void DeleteUrlImageButton_Click(object sender, EventArgs e)
{
    //code to perform the necessary action.
}

通过在网格视图中使用image按钮在代码隐藏中调用函数

因为您将ImageButton包装在超链接中,浏览器可能会转到超链接的URL,而不是返回以点击OnClick功能。您应该让DeleteUrlImageButton_Click函数调用Server.Transfer或Response.Rirect到相应的URL并去掉超链接。

当然它不会被触发,因为它嵌套在超链接中。因此,image按钮充当hperlink的文本,并且超链接不会导致回发。ImageButton只有在超链接之外时才能引起所需的操作。试试这个:

<asp:GridView ....
<asp:TemplateField ShowHeader="False">
    <ItemTemplate>
     <asp:ImageButton runat="server" ID="DeleteUrlImageButton" 
        width='24' height='24'
        ImageUrl="~/images/delete.jpeg" 
        OnClick="DeleteUrlImageButton_Click"
        OnClientClick="return confirm('Are you sure you want to delete?');" 
  PostBackUrl='<%# DataBinder.Eval(Container.DataItem,"VehID","mngVeh.aspx?delid={0}")
 %>'/>
  </ItemTemplate>
  </asp:TemplateField>
</asp:GridView>

ImageButton可以完成这项工作,不需要超链接,只需使用postbackurl,它就会将您重定向到页面。您可以省略HyperLink。按钮控件(如LinkButton、ImageButton和Button)被设计为默认情况下导致回发。

编辑:确保事件名称和参数正确。这是我用来测试它的事件

protected void DeleteUrlImageButton_Click(object sender, ImageClickEventArgs e)
{
    TextBox5.Text = "Fired ";
 //Response.Redirect( ((ImageButton)sender).PostBackUrl);//uncomment this if the button does not automatically redirects. This line should be the last one 
}