2012-04-27 80 views
2

我想在GridView中的每一行的末尾添加一个删除图像。我希望用户能够点击图像来删除该行。在ASP.Net中添加一个可点击的图像到GridView

所以我用了一个HyperLinkField字段创建一个链接到另一个页面,它将删除的记录:

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

的HyperLinkField字段不包含图片标签,所以我创建了一个模板列里面的图片。

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

然而HyperLinkField字段和形象出现在不同的列和图像没有click事件。

任何方式结合这两个?

我正在使用ASP.Net 4.0。

在此先感谢

回答

0

如何图像按钮?

<ItemTemplate> 
     <asp:ImageButton ID="ImageButton1" runat="server" 
      ImageUrl="~/Images/smallcross.gif" onclick="ImageButton1_Click" /> 
</ItemTemplate> 
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)); 
} 
+0

辉煌。谢谢 – user1131661 2012-04-30 09:39:48

0

您可以用原始的锚标记包裹你的形象,你会得到相同的结果。

<asp:TemplateField> 

<ItemTemplate> 

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

</asp:TemplateField> 
+0

感谢您的回复,我将如何传递ID? – user1131661 2012-04-27 18:30:11

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 
} 
+0

非常感谢 – user1131661 2012-04-30 09:40:00

相关问题