将可单击的图像添加到ASP.Net中的GridView

时间:2012-04-27 15:07:04

标签: asp.net image gridview hyperlink

我正在尝试在GridView的每一行末尾添加删除图像。我希望用户能够单击图像以删除该行。

所以我使用HyperLinkField创建了另一个页面的链接,该页面将删除记录:

<asp:HyperLinkField DataNavigateUrlFields="ID" 
                        DataNavigateUrlFormatString="RemoveLine.aspx?ID={0}"                             
                        Target="_blank"   />

HyperLinkField不包含Image标签,所以我在里面创建了一个带有Image的TemplateField。

<asp:TemplateField>
    <ItemTemplate>
        <asp:Image ID="imageRemove" runat="server" ImageUrl="~/Images/smallcross.gif"  />                                
    </ItemTemplate>                        
</asp:TemplateField>

但是,HyperLinkField和图像显示在不同的列中,并且图像没有单击事件。

任何组合两者的方式?

我正在使用ASP.Net 4.0。

提前致谢

4 个答案:

答案 0 :(得分:5)

通常您需要确定要删除的记录,可以使用 CommadArgument 属性来标识记录的ID:

<asp:TemplateField HeaderStyle-Width="40">
    <ItemTemplate>
        <asp:ImageButton ID="ButtonDelete" runat="server"  
            ImageUrl="~/Imags/delete.png" OnClick="ButtonDelete_Click" ToolTip="Delete"
            CommandArgument='<%#Bind("UserId")%>'/>
    </ItemTemplate>
</asp:TemplateField>

protected void ButtonDelete_Click(object sender, EventArgs e)
{
    ImageButton button = sender as ImageButton;
    DeleteUserById(Convert.ToInt32(button.CommandArgument));
}

答案 1 :(得分:2)

<asp:TemplateField>
 <ItemTemplate>
    <asp:ImageButton ID="btnDelete" runat="server"  
        ImageUrl="~/Imags/delete.png" OnClick="btnDelete_Click"
 ToolTip="Delete row" CommandName="Eliminar" CommandArgument='<%#Eval("UserId")%>'/>
 </ItemTemplate>

  您可以使用CommandArgument传递所选行的ID值并执行  欲望结果

// fires when the ImageButton gets clicked
protected void GridView1_ItemCommand(object sender, DataGridCommandEventArgs e)
{
  if(e.Commandname ="Eliminar"){
  this.Eliminar(Convert.ToInt32(e.CommandArgument));

}

}

// function to delete the record
 private void Eliminar(int code)
 { 
    //custom code to delete the records
 }

答案 2 :(得分:0)

图像按钮怎么样?

<ItemTemplate>
        <asp:ImageButton ID="ImageButton1" runat="server" 
            ImageUrl="~/Images/smallcross.gif" onclick="ImageButton1_Click" />
</ItemTemplate>

答案 3 :(得分:0)

你可以使用原始锚标记包装你的图像,你会得到相同的结果。

<asp:TemplateField>

<ItemTemplate>

<a href="RemoveLine.aspx?ID={0}">      
<asp:Image ID="imageRemove" runat="server" ImageUrl="~/Images/smallcross.gif" />                                              
</a>
</ItemTemplate>

</asp:TemplateField>